2015-01-26 53 views
5

使用实体关系的NSPredicate获取我希望能够使用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 { “汤姆”,“汤米“,”托马斯“})'

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

回答

8

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

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

谢谢!那解决了我的问题 – slidmac07 2015-01-26 21:30:47

+0

不客气! CoreData可能会非常棘手,永不放弃! :) – Para 2015-01-26 21:38:09

+0

@Para你能告诉我这个swift代码的客观C选择吗? – SARATH 2015-06-22 14:04:33