swift 中的 NSPredicate 'IN' 运算符格式问题。无法解析格式字符串
NSPredicate 'IN' operator formatting issue in swift. Unable to parse the format string
我在尝试创建如下所示的 NSPredicate 对象时遇到异常:
let searchPredicate = NSPredicate(format: "addonCategoryId IN \(idsArray)")
其中 idsArray
由 swift 数组中的 Int
个对象组成。此行本身引发异常。
控制台说:
2015-10-08 08:21:42.878 bkApp[2569:510538] *** Terminating app due to
uncaught exception 'NSInvalidArgumentException', reason: 'Unable to
parse the format string "addonCategoryId IN [5404, 5406]"'
可能是什么问题?谢谢参观。 :)
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
不喜欢它,它就不喜欢它。
我在尝试创建如下所示的 NSPredicate 对象时遇到异常:
let searchPredicate = NSPredicate(format: "addonCategoryId IN \(idsArray)")
其中 idsArray
由 swift 数组中的 Int
个对象组成。此行本身引发异常。
控制台说:
2015-10-08 08:21:42.878 bkApp[2569:510538] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "addonCategoryId IN [5404, 5406]"'
可能是什么问题?谢谢参观。 :)
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
不喜欢它,它就不喜欢它。