我的 Core Data 数据库中有一个 int32
属性。
我使用这个 int
作为 enum
位字段。
是否可以创建一个NSPredicate
来基于二进制查询项目
这个 int 的值?类似于 @"bitFieldAttribute & 0x0001"
?
我还想知道这是否可以使用二进制类型属性实现?
最佳答案
NSPredicate
可以处理它,但我不确定 CoreData 是否会接受它作为在数据存储上执行的有效谓词。将按位运算符转换为 SQL 查询时可能会遇到问题(如果您使用的是 SQLite 后备存储)。您只需尝试一下即可。
但是,语法正是您所期望的:
NSPredicate * p = [NSPredicate predicateWithFormat:@"(3 & 1) > 0"];
NSLog(@"%@", p);
NSLog(@"%d", [p evaluateWithObject:nil]);
日志:
3 & 1 > 0
1
至于在二进制类型的属性上执行此操作(即定义为data
,对吗?),这可能行不通。位运算符只有在对整数进行操作时才真正有意义(据我所知),因此在 NSData
上执行它没有多大意义。先把它转成数字,然后就可以了。
编辑
看起来 SQLite 支持此语法,因为 bitwise operators have been around since 2001 ,这意味着 Core Data 也可能会接受它。
关于iphone - 如何在 Core Data 中使用二进制标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716734/