我在尝试创建类似的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]”'
可能是什么问题?谢谢参观。 :)
答案 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
不喜欢它,那就不喜欢它。