ios - 如何使用 predicateWithFormat 查询 NSString 包含在 NSSet 中

标签 ios core-data nspredicate

使用 StackMob 作为后端。我有一个 Event 实体,它具有称为用户 users 的关系(类型 NSSet)。现在我想获取某个用户的 username@"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) {

    }];

最佳答案

如果我正确理解你的问题,你必须使用以下谓词:

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

它会查找具有给定用户名的任何用户的所有事件。

关于ios - 如何使用 predicateWithFormat 查询 NSString 包含在 NSSet 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15026586/

相关文章:

ios - 如何修复 UIPageViewController 手动分页?

ios - Apple 是否不允许在 iOS (iPad) 上使用 "close button"?

iphone - 如何使用 Core Data 将子查询作为属性执行?

ios - 使用 NSPredicate 在 NSDate 之间进行过滤

ios - ALAssets 的 NSPredicate 和 NSArray

ios - ios 上 safari 的奇怪行为。在这里解释太复杂

iphone - 如何遍历相机胶卷中存储的所有视频?

iphone - 从 fetchedresultsController 中删除错误,索引处没有部分

ios - Mogenerator和Xcode 4优点/缺点

ios - NSPredicate 在 NSSet 中查找具有属性的对象