【问题标题】:Core Data NSPredicate fetch on entity relationship using in clause核心数据 NSPredicate 使用 in 子句获取实体关系
【发布时间】:2015-03-25 08:48:39
【问题描述】:

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

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

//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', reason: '未实现为谓词生成 SQL : (ANY Person.nickName IN {"Tom", "Tommy", "Thomas"})'

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

【问题讨论】:

    标签: ios swift core-data nspredicate nsfetchrequest


    【解决方案1】:

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

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

    【讨论】:

    • @Para 你能告诉我这个快速代码的客观 C 替代方案吗?
    • 好的,给你:NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY personToNick.nickName in %@", nameArray];
    • ANY 有什么用?
    • 我不这么认为,是一对多的关系,personToNick 是一个集合。
    猜你喜欢
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    相关资源
    最近更新 更多