使用NSPredicate时,为什么硬编码字符串有效但字符串变量不起作用?
例如:
此代码返回结果:
let predicate = NSPredicate(format: "%K == %@", "level_id", "A2768F75-2293-4286-9ERA-D9888A823BF2")
此代码不会返回结果:
let predicate = NSPredicate(format: "%K = %@", "level_id", String(levelId))
调试时,打印出levelId会返回第一个示例中的正确字符串:"A2768F75-2293-4286-9ERA-D9888A823BF2"
感谢您的想法和帮助!
答案 0 :(得分:1)
levelId是什么类型的? Swift的字符串插值查看实现Printable协议的项目。因此,您的类型可能具有String属性description
或debugDescription
,在这种情况下,转换为String将无法提供您想要的内容。
我会尝试一个比较两个值的测试。例如,"A2768F75-2293-4286-9ERA-D9888A823BF2" == String(levelId)
?那么levelId.description
呢?
答案 1 :(得分:1)
=,==
左手表达式等于右手表达式。
但==
使其不区分大小写
如果是这样,大多数人都会对其进行描述,谓词中没有差异=
和==
答案 2 :(得分:-1)
试试这个
let predicate = NSPredicate(format: "%K = %@", "level_id", levelId as! String)