2016-04-02 8 views
0

連絡先をアルファベット順に格納していますので、連絡先リストの配列を画面に表示しています。今私は名前で連絡先を検索したいが、ここでは正しく動作しない。私は以下のコードを実行しました。nsarrayのnsarrayから特定の連絡先を検索する方法

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

最初に私はすべての連絡先を持っていますが、 "a"を検索すると、連絡先名に "a"を持つセクション配列がすべて得られます。しかし、ここで私は立ち往生している。セクションのすべての連絡先に連絡先名に「a」が含まれている必要はありません。例えば

例えば

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

"A" を検索した後、上記の例のために。私が "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

これは辞書の配列ではなく、配列の配列です。配列の配列から連絡先が必要です –

関連する問題