与包含的一对多关系的核心数据谓词
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];
【讨论】:
以上是关于与包含的一对多关系的核心数据谓词的主要内容,如果未能解决你的问题,请参考以下文章