提取请求在Swift 4.1中不起作用

时间:2018-07-11 06:14:36

标签: swift core-data swift4 swift4.1

我有一个谓词,将Bool设置为false(主要是)。昨天升级时,它在Swift 4.1中无法正常工作。

谓词是:

requestData.predicate = NSPredicate(format: "delete == %@", false as CVarArg);

如何在Core Data存储中检查此值是否为false?谢谢。

2 个答案:

答案 0 :(得分:1)

占位符%@用于对象,Bool的占位符为%d

但是,如果参数为常量,则语法会更简单

requestData.predicate = NSPredicate(format: "delete == FALSE")

答案 1 :(得分:0)

您应该使用以下命令来使谓词起作用:

requestData.predicate = NSPredicate(format: "delete == NO")

不幸的是,我无法告诉您为什么使用CVarArg的示例确实无法正常工作-但由于您的示例不需要此示例,因此我将尝试使用带有可选argumentArray参数的其他初始化程序:{ {1}}


The documentation布尔值部分中说:

  

您可以指定并测试布尔值的相等性,如以下示例所示:

init(format:argumentArray:)