Xcode 9.3 - NSPredicate Bool崩溃

时间:2018-05-17 10:24:51

标签: ios swift xcode xcode9.3

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

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

你遇难了。但在Xcode 9.2中,这不是问题。有什么想法吗?

3 个答案:

答案 0 :(得分:5)

//解决方案3 [Apple Documentation]

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

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

let predicate = NSPredicate(format: "preferred = %d", true)

答案 1 :(得分: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")

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

答案 2 :(得分:0)

我想你也可以用这个:

NSPredicate(format: "preferred = true")