ios - 核心数据 NSPredicate 使用 in 子句获取实体关系

标签 ios swift core-data nspredicate nsfetchrequest

我希望能够使用 IN 子句搜索实体的关系。 我有以下设置: enter image description here

我想发送一组昵称并找到所有与这些昵称相关联的人。

//array of names to find
let nameArray: [String] = ["Tom", "Tommy", "Thomas"] 

// find all Persons who have a nickname associated with that person           
let predicate = NSPredicate(format: "ANY Person.nickName in %@",nameArray)
var fetch = NSFetchRequest(entityName: "Person")
fetch.predicate = predicate
var fetchError : NSError? = nil

// executes fetch
let results = context?.executeFetchRequest(fetch, error: &fetchError)

但是当我运行代码时,出现以下错误:

'NSInvalidArgumentException',原因:'未实现谓词的 SQL 生成:(ANY Person.nickName IN {"Tom", "Tommy", "Thomas"})'

我在这里做错了什么?如果我删除谓词搜索,它会返回所有结果,但只要我添加这一行,一切都会中断。

最佳答案

您应该在 NSPredicate 中使用关系名称。
试试这个:

let predicate = NSPredicate(format: "ANY personToNick.nickName in %@", nameArray)

关于ios - 核心数据 NSPredicate 使用 in 子句获取实体关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28158610/

相关文章:

ios - 给定一个 NSDictionary 对象数组如何获取所有键?

ios - 更改证书后游戏无法运行

ios - 在 Swift 中使用 UIGestureRecognizer 处理自定义类

ios - 检测与 swift 交谈

ios - 核心数据在应用重启之前不会改变

ios - 如何在 ios<10 中快速调用 did receive 响应方法?

ios - 当作为 git 子模块包含时,我是否必须 fork 第 3 方库以便进行小的更改?

ios - Xcode Storyboard 中的对象消失

objective-c - 将 NSManagedObject 保留在 CoreData NSManagedObjectContext block 之外

iphone - 获取核心数据中 NSManagedObject 的修改日期?