NSPredicate 中的不一致
Inconsistencies in NSPredicate
我想知道为什么这个 NSPredicate 有效:
let companyPredicate = NSPredicate(format: "company = '1'")
但不是这个:
let companyPredicate = NSPredicate(format: "company = '%@'", 1)
还有这个:
let companyPredicate = NSPredicate(format: "company = '%@'", company)
当我打印公司的价值时。输出是 Optional(1).
那么为什么第一行代码有效?
来自 Predicate Format String Syntax 在 "Predicate Programming Guide":
Single or double quoting variables ... cause %@, %K, or $variable to be interpreted as a literal in the format string and so prevent any substitution.
所以在你的第二个谓词中,你比较 "company" 属性
针对文字字符串 "%@"
:
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)
我想知道为什么这个 NSPredicate 有效:
let companyPredicate = NSPredicate(format: "company = '1'")
但不是这个:
let companyPredicate = NSPredicate(format: "company = '%@'", 1)
还有这个:
let companyPredicate = NSPredicate(format: "company = '%@'", company)
当我打印公司的价值时。输出是 Optional(1).
那么为什么第一行代码有效?
来自 Predicate Format String Syntax 在 "Predicate Programming Guide":
Single or double quoting variables ... cause %@, %K, or $variable to be interpreted as a literal in the format string and so prevent any substitution.
所以在你的第二个谓词中,你比较 "company" 属性
针对文字字符串 "%@"
:
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)