获取请求在 Swift 4.1 中不起作用
Fetch request not working in Swift 4.1
我有一个谓词,它是一个 Bool 设置为 false(大部分)。当我昨天升级时,它在 Swift 4.1 中停止正常工作。
谓词是:
requestData.predicate = NSPredicate(format: "delete == %@", false as CVarArg);
如何检查核心数据存储中的此值是否为 false?谢谢
您应该使用以下方法让您的谓词工作:
requestData.predicate = NSPredicate(format: "delete == NO")
不幸的是,我无法告诉您为什么带有 CVarArg
的示例确实停止工作了 - 但由于您的示例中不需要它,我会尝试将其他初始化程序与可选的 argumentArray
参数一起使用: init(format:argumentArray:)
The documentation 在 布尔值 部分说:
You specify and test for equality of Boolean values as illustrated in the following examples:
NSPredicate *newPredicate =
[NSPredicate predicateWithFormat:@"anAttribute == %@", [NSNumber numberWithBool:aBool]];
NSPredicate *testForTrue =
[NSPredicate predicateWithFormat:@"anAttribute == YES"];
占位符%@
用于对象,占位符Bool
为%d
然而,如果参数是常量,语法会更简单
requestData.predicate = NSPredicate(format: "delete == FALSE")
我有一个谓词,它是一个 Bool 设置为 false(大部分)。当我昨天升级时,它在 Swift 4.1 中停止正常工作。
谓词是:
requestData.predicate = NSPredicate(format: "delete == %@", false as CVarArg);
如何检查核心数据存储中的此值是否为 false?谢谢
您应该使用以下方法让您的谓词工作:
requestData.predicate = NSPredicate(format: "delete == NO")
不幸的是,我无法告诉您为什么带有 CVarArg
的示例确实停止工作了 - 但由于您的示例中不需要它,我会尝试将其他初始化程序与可选的 argumentArray
参数一起使用: init(format:argumentArray:)
The documentation 在 布尔值 部分说:
You specify and test for equality of Boolean values as illustrated in the following examples:
NSPredicate *newPredicate =
[NSPredicate predicateWithFormat:@"anAttribute == %@", [NSNumber numberWithBool:aBool]];
NSPredicate *testForTrue =
[NSPredicate predicateWithFormat:@"anAttribute == YES"];
占位符%@
用于对象,占位符Bool
为%d
然而,如果参数是常量,语法会更简单
requestData.predicate = NSPredicate(format: "delete == FALSE")