1

在 Xcode 9.3 更新之后,我注意到如果你想要这样的 Predicate:

let predicate = NSPredicate(format: "preferred = %@", true as CVarArg)

你有一个崩溃。但在 Xcode 9.2 中,这不是问题。任何想法?

4

3 回答 3

6

// 解决方案 3 [ Apple 文档]

let predicate = NSPredicate(format: "preferred == TRUE")

发生异常是因为true不是对象 ( %@)。你需要%d占位符

let predicate = NSPredicate(format: "preferred = %d", true)
于 2018-05-17T10:42:16.733 回答
0

经过一番调查,我发现了如何解决这个问题。简而言之:

// Solution 1 [ NSNumber ]
let bool = NSNumber(booleanLiteral: true)
let predicate = NSPredicate(format: "preferred = %@", bool as CVarArg)

// Solution 2 [ Bool ] (static example)
let predicate = NSPredicate(format: "preferred == YES")

正如这里所解释的,当我们必须处理这种方法时,处理 Obj-C 类型而不是 Swift 类型会更好。

于 2018-05-17T10:24:50.770 回答
0

我想你也可以使用这个:

NSPredicate(format: "preferred = true")
于 2018-05-17T10:27:49.967 回答