2012-04-01 9 views
1

現在、私は文字列から検索するためにNSPredicateを使用しています。しかし、私は約2000のレコードを持っています。したがって、NSPredicateを使用した検索のためにこれらのレコードを繰り返し処理するには時間がかかります。NSPredicateは内部的に任意の検索アルゴリズムを使用していますか?

NSPredicateが内部的に検索アルゴリズムを使用しているか、検索アルゴリズムを使用して検索する必要があるかどうかを知りたいだけですか?

連絡先アプリ(スムーズに)のように検索する必要があります。連絡先アプリのように検索がスムーズになるようにするにはどうすればよいですか。

ありがとうございました。

答えて

3

NSPredicate検索アルゴリズム - すべてNSPredicateはクエリを表します。

検索アルゴリズムを選択するオプションとしてNSPredicateを受け入れることは何でもできます。あなたの場合、おそらくNSArrayfilteredArrayUsingPredicate:メソッドですか?

あなたがより速くデータを検索したい場合は、あなたがより良いアルゴリズムを自分で記述する必要があります、私は、配列だけで各アイテムを通ると述語にそれを一致して賭けます。効率的なそれは何のために働く:)

sqliteの(またはCoreData)を見てみない、彼らは単なる配列よりも良いインデックスを持っています。

それともインデックス自身作ることができます - キーは、接触の最初の文字であることを辞書に各連絡先を入れて - あなたが検索する必要がレコードの量を減らす必要があります!すなわち、代わりに配列

[ @"Alex", @"Bob", @"Bill", @"Carl" ... ] 

はあなただけ@"B"の配列内の項目を検索する必要が​​検索文字列に対して辞書

{ 
    @"A" : [ @"Alex" ], 
    @"B" : [ @"Bob", @"Bill" ], 
    @"C" : [ @"Carl" ] 
    ... 
} 

を持っています。

PSは、あなたの辞書のキーケース/分音独立させることを忘れないでください。)

+0

情報をお寄せいただきありがとうございますが。私はそれを試してみましょう。 – iOSAppDev

関連する問題