2016-04-02 4 views
0

У меня есть контакт в алфавитном порядке, поэтому у меня есть массив массива для списка контактов, который у меня есть на экране. Теперь я хочу искать контакт по имени, но предикат не работает должным образом. Я сделал код ниже.Как найти конкретный контакт из nsarray nsarray

filterArray.filterUsingPredicate(NSPredicate(format: "ANY SELF.name CONTAINS[cd] '\(tfSearchBar.text!)'", argumentArray: nil)) 

В массиве фильтров первого у меня есть все контакты, но когда я искать «а» это дает все массив раздел, который имеет «а» в имени контакта. но здесь я застрял. Не обязательно, чтобы все контакты раздела содержали «а» в имени контакта.

Например

(
    A:(
     { 
      name = "abc" 
      number = "123456" 
     } 
     { 
      name = "azx" 
      number = "123456" 
     } 
    ) 
) 

Например, для приведенном выше примере после поиска "а". когда я ищу «ab», то тот же массив возвращает предикат. Не только первый объект. Любой способ найти только первый объект без вложенного предиката.

ответ

0

Я не уверен, что вы пытаетесь выполнить со словом «ЛЮБОЙ» в своем предикате, но это кажется излишним. Этот код работает так, как вы описываете, когда его помещают на Игровое поле:

import UIKit 

@objc class DataElement : NSObject { 
    let name : String 
    let number : String 

    init(name : String, number : String) { 
     self.name = name 
     self.number = number 
    } 
} 

let dataArray : NSArray = [ 
    DataElement(name: "abc", number: "123456"), 
    DataElement(name: "azx", number: "689101") 
] 

let searchTerm = "a" 
let predicate = NSPredicate(format: "SELF.name CONTAINS[cd] '\(searchTerm)'", argumentArray: nil) 

dataArray.filteredArrayUsingPredicate(predicate) 
+0

Это массив словаря, а не массивы массивов. Мне нужен контакт из массива массива –

Смежные вопросы