【问题标题】:NSPredicate 'IN' operator formatting issue in swift. Unable to parse the format stringNSPredicate 'IN' 运算符在 swift 中的格式问题。无法解析格式字符串
【发布时间】:2015-10-08 03:02:24
【问题描述】:
我在尝试创建 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]”'
可能是什么问题?谢谢参观。 :)
【问题讨论】:
标签:
ios
swift
core-data
nspredicate
【解决方案1】:
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 不喜欢它,它就不喜欢它。