2

NSFetchedResultsController を使用してシーケンシャル フィルターを作成したいと考えています。目標は、より関連性の高い結果を最初に表示することです。

例: エンティティの人物: 名前 - 国

1) 検索文字列で名前に含まれる人物。
2) 国に検索文字列が含まれる人物。

シーケンシャルとは、最初に検索結果 1) を取得し、次に 2) を取得することを意味します。

NSFetchedResultsController を 1 つの NSFetchRequest で初期化するため、正しい方法がわかりません。しかし、ここでは 2 つの NSFetchRequest が必要です。2 つのリクエストを使用するもう 1 つの問題は、2 番目のリクエストで重複したアイテムを生成できることです。

NSFetchedResultsController を使用してそれを処理することは可能ですか?

ありがとう

例を次に示します。

  • レコード 1 : 名前: ピーター国: モーリシャス

  • record 2 : name : Marc 国 : モーリタニア

  • レコード 3 : 名前 : Maureen 国 : ベルギー

ユーザーが検索バーに「ma」と入力した場合:

最初に名前の結果を表示し、次に国の結果を表示したいと思います。

したがって、ここでは、結果は次の順序になります。

  1. マーク ("MA"rc)
  2. モーリーン ("MA"ureen)
  3. ピーター ("MA"uritius)
4

1 に答える 1

1

ここでは、フィルタリングと並べ替えという 2 つの異なる処理が行われています。

setSortDescriptorsNSFetchRequestを呼び出して並べ替えを行うことができます。並べ替え記述子の配列を取り、それぞれが名前や国などに対応します。

フィルタリングは述語によって行われます。setPredicate:NSFetchRequest で使用します。述語は 1 つしか取得できませんが、and および or を使用して複数の基準を持つことができます。

于 2011-02-26T22:35:37.877 に答える