1

私のフェッチ要求は、必要なものではなく、すべてのグループ オブジェクトを取得しています。

現在のユーザーが属しているグループのみを取得したいのですが、述語が機能していないようです。何が悪いのか考えていますか?

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    [fetchRequest setEntity:[NSEntityDescription entityForName:@"AGroup" inManagedObjectContext:_managedObjectContext]];
    AUser *u = [AUser currentUser];  //gets app's current user
    [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"ANY users = %@", u]];

次のことも試しましたが、うまくいきませんでした。

[NSPredicate predicateWithFormat:@"(users CONTAINS %@)", u];
[NSPredicate predicateWithFormat:@"SUBQUERY(users, $user, $user = %@).@count = [users count]", u];

クラス構造

AGroup
- users (Type: AUser *)

AUser
- name (Type: NSString *)
4

1 に答える 1

1

理由がわかりません

[NSPredicate predicateWithFormat:@"ANY users = %@", u]

あなたにはうまくいきませんが、より簡単な解決策は、逆の関係を使用することです

AUser *u = [AUser currentUser];
NSSet *theGroups = u.groups;

または、配列として必要な場合:

NSArray *theGroups = [u.groups allObjects];
于 2013-03-09T22:22:18.497 に答える