0

StackMob をバックエンドとして使用します。user (type )Eventという関係を持つエンティティがあります。現在、一部のユーザーのすべてのイベントを取得したいと考えています。私のコードは次のようになります:usersNSSetusername@"someuser"

[self.client getLoggedInUserOnSuccess:^(NSDictionary *result) {
        NSString *currentlyLoggedInUser = [result valueForKey:@"username"];

        NSFetchRequest *request = [[NSFetchRequest alloc] init];
        NSEntityDescription *eventEntity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:self.managedOjbectContext];
        [request setEntity:eventEntity];

        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY users.username = %@", currentlyLoggedInUser];
        NSLog(@"predicate: %@", predicate);
        [request setPredicate:predicate];
        NSLog(@"request: %@", request);
        events = [NSArray new];
        events = [self.managedOjbectContext executeFetchRequest:request error:nil];

        /* this is working...
        for (Event *e in events) {
            NSLog(@"%@",[e.users filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"username == %@", currentlyLoggedInUser]]);

        }
         */
        NSLog(@"events: %@", events);
    } onFailure:^(NSError *error) {

    }];
4

2 に答える 2

2

あなたの質問を正しく理解しているなら、次の述語を使用する必要があります。

NSString *userName = @"some user";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY users.username = %@", userName];

指定されたユーザー名を持つユーザーがいるすべてのイベントが検索されます。

于 2013-02-22T14:48:37.303 に答える
0

User エンティティと Event エンティティがあると仮定すると、名前だけでなく User を述語に渡す必要があります。

User *loggedInUser = // anything, e.g.
User *loggedInUser = [[allUsers filteredSetUsingPredicate:
                       [NSPredicate predicateWithFormat:
                         @"username == %@", currentlyLoggedInUser] anyObject];

fetchRequest.predicate = [NSPredicate predicateWithFormat:
                           @"%@ in users", loggedInUser]
于 2013-02-22T17:46:11.257 に答える