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

Posted

技术标签:

【中文标题】NSPredicate \'IN\' 运算符在 swift 中的格式问题。无法解析格式字符串【英文标题】: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]”'

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

【问题讨论】:

【参考方案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 不喜欢它,它就不喜欢它。

【讨论】:

哦,我不知道swift的这个功能。谢谢

以上是关于NSPredicate 'IN' 运算符在 swift 中的格式问题。无法解析格式字符串的主要内容,如果未能解决你的问题,请参考以下文章

NSPredicate:将 CONTAINS 与 IN 结合

NSPredicate 同时使用 IN 和 LIKE

NSPredicate 通过更改 IN 子句获取对象

NSPredicate'运算符'LIKE'不支持int类型'

IOS / Objective-C:核心数据NSPredicate使用IN不返回所有匹配

NSArray 和 NSPredicate 使用 NOT IN