Swift NSPredicate字符串变量不返回数据

时间:2016-10-05 20:21:43

标签: ios swift core-data nspredicate

使用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"

感谢您的想法和帮助!

3 个答案:

答案 0 :(得分:1)

levelId是什么类型的? Swift的字符串插值查看实现Printable协议的项目。因此,您的类型可能具有String属性descriptiondebugDescription,在这种情况下,转换为String将无法提供您想要的内容。

我会尝试一个比较两个值的测试。例如,"A2768F75-2293-4286-9ERA-D9888A823BF2" == String(levelId)?那么levelId.description呢?

答案 1 :(得分:1)

=,==

  

左手表达式等于右手表达式。

==使其不区分大小写

如果是这样,大多数人都会对其进行描述,谓词中没有差异===

答案 2 :(得分:-1)

试试这个

let predicate = NSPredicate(format: "%K = %@", "level_id", levelId as! String)