【发布时间】:2014-12-08 21:46:16
【问题描述】:
这似乎与 How to use binary flags in Core Data? 相同,但我在尝试时收到“不支持的函数表达式”。
我想创建一个谓词,它可以在我的 Core Data 对象存储中找到具有特定 ID 且未设置特定二进制标志的实体。这是我的代码 sn-p:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ownerID = %@ AND ((banned & 8) == 0)", THEUSERUSERID];
NSFetchRequest *fetchRequest = [PCDUser MR_requestAllWithPredicate:predicate];
_frController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:[[COMMDBMANAGER magicalRecordStack] context] sectionNameKeyPath:sectionKeyPath cacheName:nil];
[_frController setDelegate:self];
[_frController performFetch:&error];
查看上面链接中的上一期,看来这应该可行。但是,我得到一个
'NSInvalidArgumentException', reason: 'Unsupported function expression banned & 8'
因为我需要 NSFetchedResultsController 结果集(和 indexPaths 等)来包含过滤后的结果,所以我无法找到一种方法在事后过滤它们并使结果集包含该过滤。
如何在 Core Data 中使用二进制标志?
【问题讨论】:
-
我在
NSFetchRequest中有一个类似的谓词,它起作用了。您确定属性banned存在并且具有支持按位运算的类型(例如Integer32)吗? -
谢谢。我一直在帮助后端 mysql 数据库上的一个 node.js 人,该数据库支持这个应用程序(以及数据库中的这个 CD 存储从中派生数据),我的脑海中该属性的名称错误。在 CD 架构中我有
bannedFlags但在 mysqlbanned[不要问为什么,因为我不知道] 并且在与banned打交道的漫长周末之后,今天早上我脑子里放了个屁。感谢您提醒您仔细检查显而易见的内容。做出回答,我会接受的。
标签: ios objective-c core-data nspredicate nsfetchrequest