这似乎与How to use binary flags in Core Data?相同,但在尝试时我得到了“不支持的函数表达式”。
我想创建一个谓词,它可以在我的Core Data对象存储中找到具有特定ID并且未设置某些二进制标志的实体。这是我的代码段:
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等)来包含过滤结果,所以我无法找到一种在事后过滤它们的方法,并且结果集包括过滤。< / p>
如何在Core Data中使用二进制标志?
答案 0 :(得分:2)
我在NSFetchRequest
中有一个类似的谓词并且它有效。检查模型中是否存在属性banned
,并且该属性具有支持按位运算的类型(例如,Integer32
)。