谓词表达式中的 iOS Core Data 二元运算

标签 ios objective-c core-data nspredicate nsfetchrequest

这好像和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 等)来包含过滤后的结果,所以我无法找到一种方法在事后过滤它们并让结果集包含过滤。

如何在 Core Data 中使用二进制标志?

最佳答案

我在 NSFetchRequest 中有一个类似的谓词并且它起作用了。检查属性 banned 是否存在于您的模型中并且具有支持按位运算的类型(例如,Integer32)。

关于谓词表达式中的 iOS Core Data 二元运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27367575/

相关文章:

javascript - React Native listView 项目删除未正确删除项目

ios - 尝试仅允许某些字符串进入 URL 栏

ios - 将 inputView 背景颜色从模糊灰色更改为其他任何颜色

ios - UITableView 半粘性 tableView Header 类似 App Store 详细 View

ios - CoreData 关系内容不持久

ios - 从另一个类重新加载核心数据 TableView

iOS 7 - 在 ViewController 之间传递数据(图像)

ios - Instagram 风格的相机转换

objective-c - NSMenuItem、自定义 View 和 mouseUp 的奇怪问题 :

core-data - 核心数据和 cloudkit 同步 wwdc 2019 不适用于 beta 3