在Xcode 9.3更新之后,我注意到如果你想让Predicate像这样:
let predicate = NSPredicate(format: "preferred = %@", true as CVarArg)
你遇难了。但在Xcode 9.2中,这不是问题。有什么想法吗?
答案 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")