2011-07-23 12 views
0

私のコアデータアプリケーションでは、エンティティPerson(fullname属性を持つ)があります。名前を検索する最も簡単な方法は、フィールドを述語検索を行うことがある。コアデータ - 述語を使用したより良い検索

[predicateArray addObject:[NSPredicate predicateWithFormat:@"fullname CONTAINS[cd] %@", searchString]]; 

しかし、私が拾ってきたものから、これはあなたが有効にしたい場合は特に、高価になることができ、正規表現の検索ですライブ検索(入力中に検索)、リストが非常に大きい場合この検索を行うより良い方法はありますか? fullNameを何らかの形で変換して、検索を迅速に行うことはできますか?

+0

ライブ検索でこのように検索できるアイテムの数を確認するテストを行いましたか?私は確かにわからないが、以前の経験からは、2000アイテム以上を賭ける。あなたは2000以上のアイテムを検索しますか? –

+0

これは連絡先リストなので、平均は約1000になりますが、大きなリスト(特に組織リスト)を持つ人がいると想像できます。したがって、可能であれば、これを10,000項目に拡大してください。 –

+0

これをコンボボックスに接続する予定ですか? –

答えて

0

おそらく、これと同様のアプローチに興味を持っている:

Core Data search optimization

基本的にはあなたが最初の数文字を最適化するために、子の検索、特定のエンティティのカップルを作成します。

あなたはおそらく、あなたの述語に "contains"の代わりに "beginning with"を探しています。人々は自分の名前の真ん中の文字で連絡先を精神的に整理していることはめったにありません。通常、「am」や「nd」ではなく、AdamやAndyなどに「A」と入力することから始まります。

+0

しかし、彼らは連絡先の姓または姓だけを覚えていますか?検索結果にもそれをキャプチャすることが重要です。 –

+0

確かに、あなたはまだcontainsの代わりにbegin withを使いたいと思います。 – ImHuntingWabbits

関連する問題