【问题标题】:NSPredicate in many to many comparison using IN operationNSPredicate 在多对多比较中使用 IN 操作
【发布时间】:2014-04-30 11:01:38
【问题描述】:

我正在尝试从核心数据中获取记录。它是一个任务列表。 Tasks 实体与Tags 实体有to-many 关系。

现在我需要使用一些过滤的tags 获取tasks

due_date = nil AND status != 2 AND (user_id = 26894 OR owner.id = 26894) AND (title contains[cd] 'shop' OR owner.name contains[cd] 'shop' OR owner.email contains[cd] 'shop' OR note contains[cd] 'shop') AND ANY tags.id IN (
    2021,
    6573,
    6588
)

部分

AND ANY tags.id IN (
        2021,
        6573,
        6588
    )

导致应用程序崩溃并出现以下错误。

 -[__NSCFNumber countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x163b3500
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x163b3500'

这是我的完整方法:

+ (NSPredicate *)predicateGetIdeasOffline {
    NSString *predicateString = [NSString stringWithFormat:@"due_date = nil AND status != 2 AND (user_id = %@ OR owner.id = %@)", [DBUsers currentUser].id, [DBUsers currentUser].id];

    if ([MKGlobals tasksSearchFilter].length > 0) {
        NSString *searchTerm = [MKGlobals tasksSearchFilter];
        predicateString = [NSString stringWithFormat:@"%@ AND (title contains[cd] '%@' OR owner.name contains[cd] '%@' OR owner.email contains[cd] '%@' OR note contains[cd] '%@')", predicateString, searchTerm, searchTerm, searchTerm, searchTerm];
    }

    if ([MKGlobals tagsList].count > 0) {
        predicateString = [NSString stringWithFormat:@"%@ AND ANY tags.id IN %@", predicateString, [MKGlobals tagsListIDs]];
    }
    return [NSPredicate predicateWithFormat:predicateString];
}

任何帮助如何创建这样的NSPredicate

【问题讨论】:

标签: ios objective-c core-data nspredicate


【解决方案1】:

我遇到了同样的问题,只是因为我使用了NSSet 并调用了[NSPredicate predicateWithFormat:@"ID IN %@", [set allObjects]];。对我有用的是在调用谓词函数之前将 NSSet 完全更改为 NSArray。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多