2016-04-02 35 views
0

我已按字母顺序存储联系人,所以我有用于联系人列表的数组阵列,这是我在屏幕上显示的联系人列表。现在,我想通过名称搜索联系人,但谓词在此处无法正常工作。我已经完成了下面的代码。如何从nsarray的nsarray中搜索特定的联系人

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

在滤光器阵列第一i-都接触,但是当我搜索“一个”,它给所有具有“一个”中的联系人姓名的部分阵列。但在这里我卡住了。该部分的所有联系人不必在联系人姓名中包含“a”。

例如

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

例如,对于搜索 “一个” 之后上述的例子。当我搜索“ab”,然后通过谓词返回相同的数组。不仅仅是第一个对象。任何方式只能找到带有嵌套谓词的第一个对象。

回答

0

我不确定你想用你的谓词中的“ANY”来完成什么,但似乎是多余的。此代码按照您在放入游乐场时描述的方式工作:

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

这是字典数组,不是数组数组。我想要一个数组中的联系人 –