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

时间:2014-05-20 19:39:39

标签: ios core-data nspredicate magicalrecord

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

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

以下是应该执行提取的代码:

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

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

1 个答案:

答案 0 :(得分:0)

谓词中的

'...'被视为文字字符串,而%@占位符位于 引号不会扩大。您必须首先构建组合字符串:

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