2011-12-09 7 views
1

私はコアデータオブジェクトグラフは、フィルタリング関係

Grandparent--(hasMany)-->>Parent--(hasMany)-->>Child 

ことを設定していると、各エンティティは、'modified'性質を有しています。私は特定の日付の後に変更された日付を持つそれぞれのGrandparentエンティティを返すフェッチを実行したいと思います。これには、その時点以降の変更日を持つすべての親エンティティと、子エンティティと同じエンティティが含まれている必要があります。

私は簡単に私が同じようにその関係をフィルタリングすることができるように述語を書くためにどのような方法があります

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"modified > %@", lastSyncDate]; 

を使用して祖父母のリストをつかむことができますか?ありがとう!

答えて

0

は、私はちょうど私の全体のオブジェクトグラフをつかみ、それはひどく効率的ではないのですが、トリックを行うようだ

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"modified > %@", lastSyncDate]; 
NSArray *modifiedChildren = [[parent.children allObjects] filteredArrayUsingPredicate:predicate]; 

を使用して関係をフィルタリング終わりました。

1

あなたはこのような何か行うことができるはず。(。。ParentChildのプロパティは、それぞれparentschildrenと呼ばれているだけで、それはあなたがそれらを求めているあるものは何でものためにそれらを変更する)

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"modified > %@ OR ANY parents.modified > %@ OR ANY parents.children.modified > %@", 
          lastSyncDate, 
          lastSyncDate, 
          lastSyncDate]; 

は、私はあなたがこれを読んだことが示唆: http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html#//apple_ref/doc/uid/TP40001795-215891

UPDATEを

これはできないようです。実際にSUBQUERYを使用する必要があると思います。この質問は、あなたが何をしたいかのようになります。 What's better way to build NSPredicate with to-many deep relationships?

+0

これは例外をスローします: 'NSInvalidArgumentException'、理由: 'ここに複数のキーが許可されていません' – NathanGaskin

+1

申し訳ありませんが、正しくテストする能力はありませんが、実際には機能しません。私は 'SUBQUERY'と類似の別の質問へのリンクについて言及するように更新しました。うまくいけば、それはあなたを正しい軌道に乗せてくれるでしょう。 – mattjgalloway

+0

ご協力ありがとうございます! :) – NathanGaskin