在swift中NSPredicate'IN'运算符格式化问题。无法解析格式字符串

时间:2015-10-08 03:02:25

标签: ios swift core-data nspredicate

我在尝试创建类似的NSPredicate对象时遇到异常:

let searchPredicate = NSPredicate(format: "addonCategoryId IN \(idsArray)")

其中idsArray由swift数组中的Int个对象组成。这条线本身就有例外。 控制台说:

  

2015-10-08 08:21:42.878 bkApp [2569:510538] ***终止应用程序   未捕获的异常'NSInvalidArgumentException',原因:'无法执行   解析格式字符串“addonCategoryId IN [5404,5406]”'

可能是什么问题?谢谢参观。 :)

1 个答案:

答案 0 :(得分:6)

NSPredicate仍然期待Objective-C样式格式字符串。你使用了字符串插值。

let searchPredicate = NSPredicate(format: "addonCategoryId IN \(idsArray)")
// result: addonCategoryId IN [5404, 5406]

试试这个:

let searchPredicate = NSPredicate(format: "addonCategoryId IN %@", idsArray)
// result: addonCategoryId IN {5404, 5406}

区别在于[]{}的差异,但如果NSPredicate不喜欢它,那就不喜欢它。