我想知道为什么这个NSPredicate有效:
identifier
但不是这一个:
let companyPredicate = NSPredicate(format: "company = '1'")
还有这个:
let companyPredicate = NSPredicate(format: "company = '%@'", 1)
当我打印公司的价值时。输出为Optional(1)。
那么为什么第一行代码有效?
答案 0 :(得分:5)
来自“谓词编程指南”中的Predicate Format String Syntax:
单引号或双引号变量...导致%@,%K或$变量被解释为格式字符串中的文字,因此阻止任何替换。
所以在你的第二个谓词中,你比较“公司”属性
对文字字符串"%@"
:
let p1 = NSPredicate(format: "company = '%@'", 1)
print(p1) // company == "%@"
要与整数进行比较,请使用
let p2 = NSPredicate(format: "company = %@", NSNumber(integer: 1))
print(p2) // company == 1
或
let p3 = NSPredicate(format: "company = %ld", 1)