1

、、、の3つのエンティティGrandparentParentあるとしChildます。

Grandparent - Parent1対多の関係です

Parent - Child多対1の関係です

Childage属性があります

私の目標は、特定の場所のすべてのChildエンティティを取得することです。また、取得した結果を。で並べ替えたいと思います。私はこれを複数のステップで実行できることを知っていますが、私の質問は、単一のフェッチ要求でこれをどのように達成できるかということです。ParentParent.grandparentGrandparentage

編集:おそらく、この図は上記の説明よりも少し明確になります。 ここに画像の説明を入力してください

4

2 に答える 2

0

変数名とリレーションシップ名を想定し、コードとモデルで名前を付けた名前に変更します。

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Child" inManagedObjectContext:context];
request.predicate = [NSPredicate predicateWithFormat:@"parent.grandparent == %@", grandParentObject];
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES]];

これは機能するはずです。私はコード補完に慣れていて、これをXcodeに入力しなかったので、メソッド名が少しずれている可能性がありますが、あなたはその考えを理解しています。

于 2012-10-10T00:35:54.950 に答える
0

私は幸運に恵まれ、この答え NSPredicateがNSFetchedResultsControllerで奇妙に動作していることを発見しました

質問の言い回しが違っていたので、私がそれを見つけるのに時間がかかりました。基本的に、私が探している述語は次の形式です。

[NSPredicate predicateWithFormat:@"SUBQUERY(parent, $x, $x.grandparent == %@).@count != 0", grandParent];
于 2012-10-15T21:19:42.847 に答える