2016-04-02 61 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

這是字典數組,不是數組數組。我想要一個數組中的聯繫人 –