我正在尝试从Core数据中获取记录。这是一个任务列表。 Tasks
实体与to-many
实体有Tags
的关系。
现在我需要使用一些已过滤的tasks
来获取tags
。
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
。
答案 0 :(得分:0)
我遇到了同样的问题,只是因为我使用了NSSet
并且调用了[NSPredicate predicateWithFormat:@"ID IN %@", [set allObjects]];
。对我有用的是在调用谓词函数之前将NSSet完全更改为NSArray。