1

Aモデルにとの 2 つのエンティティがありBます。Aは と対多の関係にBあり、その逆は に戻る対一の関係Aです。B次のように使用してエンティティの結果を取得したいと思いAます。

  1. Aいくつかの述語を使用して、エンティティに対してフェッチ リクエストを実行します。
  2. このリクエストによって返された結果で、関連するすべての にドリルスルーし、Bこれらを 2 番目の述語でフィルターします。
  3. entity のすべての有効な結果を返しますB

もちろん、(1) を実行Bしてから、2 番目の述語を使用して s の配列をフィルター処理することもできます。ただし、これが最適ではないことはわかっています。

単一のフェッチと述語であっても、これを最も効率的に行うにはどうすればよいですか?

4

2 に答える 2

1

すでに A のインスタンスを保持している場合は、A のアクセサーを介して関連する B インスタンスにアクセスするだけです。

特定の A に関連するすべての B を直接フェッチする必要がある場合 (この場合は必要ありません)、B と A の (逆の) 関係に基づく述語を使用して、B エンティティのフェッチ リクエストを作成します。 . (特定の構文は、逆関係の名前と、その逆関係が対 1 か対多かによって異なります。)

于 2012-05-21T05:00:10.520 に答える
1

残念ながら、あなたが何を求めているのかよくわかりません。詳細を教えていただけると助かります。

だから、私は推測する必要があります... フェッチ要求は 1 つのタイプのエンティティしか返すことができないことに注意してください。したがって、関係の多くの側面が必要な場合は、それを取得してください。

述語で「ドット」表記を使用できます...私はおそらく後方検索も行います...

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Employee"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"department.name like 'Support'"];

Department から Employee へは 1 対多の関係があります。上記は、名前に「サポート」が含まれる部門に属するすべての従業員を取得します。

于 2012-05-21T02:52:33.493 に答える