与包含的一对多关系的核心数据谓词

Posted

技术标签:

【中文标题】与包含的一对多关系的核心数据谓词【英文标题】:Core data predicate on one-to-many relationship with contains 【发布时间】:2014-05-20 19:39:39 【问题描述】:

在我的核心数据模型中,我有对话类,它具有“参与者”关系,其中的元素是参与者类的实例。参与者类有一个 href 字段,它是一个字符串。

使用 MagicalRecord,我正在尝试获取至少有一个参与者的所有对话实例,其 href 包含“/businesses/%@”,其中 %@ 是给定的标识符。在业务术语中,这意味着加载具有给定标识符的业务参与的所有对话。

这是应该进行提取的代码:

NSPredicate *participationFilter = [NSPredicate predicateWithFormat:@"ANY participants.href contains[cd] '/businesses/%@'" argumentArray:@[identifier]];
NSArray *conversations = [Conversation MR_findAllWithPredicate:participationFilter];

但对话总是空的,即使我知道这样的对话在我的数据库中。我做错了什么?

【问题讨论】:

使用Magical Record有什么意义? Magical Record 是一个开源框架,让 Core Data 更易于操作:github.com/magicalpanda/MagicalRecord 哦,一个核心数据包装器......不是我的强项 x.x 【参考方案1】:

谓词中的'...' 被视为文字字符串,而%@ 占位符在 引号不展开。您必须先构建组合字符串:

NSString *searchTerm = [NSString stringWithFormat:@"/businesses/%@", identifier];
NSPredicate *participationFilter = [NSPredicate predicateWithFormat:@"ANY participants.href contains[cd] %@", searchTerm];

【讨论】:

以上是关于与包含的一对多关系的核心数据谓词的主要内容,如果未能解决你的问题,请参考以下文章

具有一对多关系的复杂核心数据谓词

在具有多对一/一对多关系的核心数据中构造谓词

核心数据 - 以一对多关系访问实例与获取请求?

可可 iphone 核心数据谓词一对多 fetchrequest

核心数据获取谓词“不包含”?

不搜索一对多核心数据关系