Pro*_*ber 79 iphone predicate core-data ipad ios
我有一个类型的属性,BOOL我想搜索此属性所在的所有托管对象YES.
对于字符串属性,它很简单.我创建一个这样的谓词:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userName = %@", userName];
Run Code Online (Sandbox Code Playgroud)
但是我该如何做,如果我有一个名为selected的bool属性,我想为此做一个谓词?我可以这样做吗?
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"selected = %@", yesNumber];
Run Code Online (Sandbox Code Playgroud)
或者我是否需要其他格式说明符并且只是通过YES?
alb*_*amg 99
来自谓词编程指南:
您可以指定并测试布尔值的相等性,如以下示例所示:
NSPredicate *newPredicate = [NSPredicate predicateWithFormat:@"anAttribute == %@", [NSNumber numberWithBool:aBool]];
NSPredicate *testForTrue = [NSPredicate predicateWithFormat:@"anAttribute == YES"];
Run Code Online (Sandbox Code Playgroud)
您还可以查看谓词格式字符串语法.
Vik*_*era 80
Swift 4.0
let predicate = NSPredicate(format: "boolAttribute == %@", NSNumber(value: true))
Run Code Online (Sandbox Code Playgroud)
Luk*_*cka 16
斯威夫特3
let predicate = NSPredicate(format: "boolAttribute == %@", NSNumber(value: true))
Run Code Online (Sandbox Code Playgroud)
在Swift 3中你应该使用NSNumber(value: true).
NSNumber(booleanLiteral: true)一般情况下,不建议直接使用任何文字初始化程序,例如SwiftLint(v.0.16.1)将ExpressibleBy...Literal直接生成使用初始化程序的警告:
编译器协议初始化违规:在编译器协议中声明的初始化器
ExpressibleByArrayLiteral不应直接调用.(compiler_protocol_init)
不要转换为NSNumber,也不要使用双“ ==”
更适合Swift> = 4:
NSPredicate(format: "boolAttribute = %d", true)
Run Code Online (Sandbox Code Playgroud)
注意:在此示例中,“ true”是布尔(结构)
雨燕4
request.predicate = NSPredicate(format: "boolAttribute == %@", NSNumber(value: true))
Run Code Online (Sandbox Code Playgroud)
雨燕3
request.predicate = NSPredicate(format: "field = %@", value as CVarArg)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36933 次 |
| 最近记录: |