获取请求在 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")