NSPredicate IN 从数组元素中查询

Posted

技术标签:

【中文标题】NSPredicate IN 从数组元素中查询【英文标题】:NSPredicate IN query from array elements 【发布时间】:2016-02-03 21:30:51 【问题描述】:

为一个古怪的标题道歉。我有一个 Ints 数组,我想定义一个 NSPredicate 来过滤掉 connectionType 等于数组中包含的值的项目。

所以基本上是这样的:

fetchRequest.predicate = NSPredicate(format: "connectionType IN  all items in array 

我发现了一些我认为可以处理此问题的 Objective C 示例,但我刚刚进入 ios 开发并且只使用过 Swift,因此非常感谢您提供一些帮助 :)

我试过这样做:

 fetchRequest.predicate = NSPredicate(format: "connectionType IN \(myIntArray)"

但是,这会返回一个 NSInvalidArgumentException。我觉得我很接近。

NSInvalidArgumentException', reason: 'Unable to parse the format string "connectionType IN [28, 28]" 

如果我执行以下操作:

fetchRequest.predicate = NSPredicate(format: "connectionType IN %@", myArray)

我得到了这个错误:

NSInvalidArgumentException', reason: 'unimplemented SQL generation for predicate : (connectionType IN 28, 28)'

【问题讨论】:

【参考方案1】:

你会像这样构造一个谓词:

NSPredicate(format:"connectionType IN %@", yourIntArray)

我希望这会有所帮助。

【讨论】:

感谢您的建议,看来它几乎可以工作了。但是,我收到以下错误:NSInvalidArgumentException',原因:'无法解析格式字符串“connectionType IN [28, 28]” 没关系,一旦我意识到我有一对多的关系并相应地进行调整,它就起作用了。谢谢! @ardevd 你的评论拯救了我的一天,犯了同样的错误,不得不排列成一个数组

以上是关于NSPredicate IN 从数组元素中查询的主要内容,如果未能解决你的问题,请参考以下文章

NSPredicate 的使用

从核心数据中获取

CoreData:使用 IN 基于谓词/数组进行排序

谓词(NSPredicate)

NSPredicate 返回子查询的数组

如何使用数组创建 NSPredicate 包含元素