に参加:私はアイテムを取得したいのnの関係NSPredicate:私は1とcoredataデータモデルを持っているオブジェクトまたはオブジェクトID
Entity Item
Tag *tag;
....
Entity Tag
NSString *name;
、魔女は、タグに関係を持っています。 次の作品は:
Tag *selectedTag = .....
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Item"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tag.name = %@", selectedTag.name];
問題があり、同じ名前を持つ複数のタグがあるcoud。 これらの項目はフェッチしないでください。
直接オブジェクト(selectedTag)を直接比較することも、少なくともidと比較することもできます。
両方:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tag == %@", selectedTag];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"[tag objectID] == %@", [selectedTag objectID] ];
は動作しません。
ありがとうございます。
この「クエリ」のNSPredicateはどのように見えますか?タグを取得して関係をナビゲートするよりも、私は望んでいません。他の方法はありませんか? – mica
明確にするには:TableViewでNSFetchedResultsControllerを使用したいと思います。セット全体を記憶に入れるよりも、たくさんのアイテムの方が良いのではないでしょうか? – mica
テーブルを表示する前にテーブルを生成するために、fetchedResultsControllerをfetchRequestで初期化します。そのフェッチで特定のオブジェクトIDを要求することはほとんどありません。一度にいくつかのタグだけをテーブルに入れる場合は、 'tag.name ==%@'のような述語を使うことができます。 FRCクラスのリファレンス「フェッチ要求の変更」を参照してください。テーブルが起動して実行され、ユーザーがタグを選択すると、テーブル代理メソッドから選択したタグを取得できます。その時点で別のフェッチは必要ありません。 – Wienke