在 Xcode 9.3 更新之后,我注意到如果你想要这样的 Predicate:
let predicate = NSPredicate(format: "preferred = %@", true as CVarArg)
你有一个崩溃。但在 Xcode 9.2 中,这不是问题。任何想法?
// 解决方案 3 [ Apple 文档]
let predicate = NSPredicate(format: "preferred == TRUE")
发生异常是因为true
不是对象 ( %@
)。你需要%d
占位符
let predicate = NSPredicate(format: "preferred = %d", true)
经过一番调查,我发现了如何解决这个问题。简而言之:
// 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 类型会更好。
我想你也可以使用这个:
NSPredicate(format: "preferred = true")