核心数据对多关系 NSPredicate 来获取

Posted

技术标签:

【中文标题】核心数据对多关系 NSPredicate 来获取【英文标题】:Core Data to-Many relationship NSPredicate to fetch 【发布时间】:2013-04-03 15:05:51 【问题描述】:

我必须获取所有具有所选书籍标签的书籍。

BOOK <<-->> TAGS

一本书可以有多个标签。 如果假设我选择一本书并且有标签“数据库,算法”。 然后它应该选择所有标签为“数据库”、“算法”和“数据库、算法”的书籍。

我从核心数据中获取的谓词是:

request.predicate = [NSPredicate predicateWithFormat:@"(ANY %K IN %@)",
                         REL_BOOK_TAG_LIST, tagList];

其中 tagList 是所选书籍的 tagList(NSSet 类型)。我也尝试过使用NSArray,但没有奏效。 我正朝着正确的方向前进,应该做一些不同的事情吗? 请帮我。谢谢。

【问题讨论】:

“没用”是什么意思?你有没有得到错误或错误的结果?请更准确地描述问题。 【参考方案1】:

试试这个...

[request setPredicate:[NSPredicate predicateWithFormat:@"ANY tags IN %@", tagList]];

tagList 应该是一个实际的Tag 对象数组,tags 是从BookTagrelationship 名称。

【讨论】:

这与问题中的谓词完全相同。 好吧,它没有括号,但我已经多次使用相同的谓词并且它对我有用。将等待 OP 解释为什么它不起作用并在必要时进行编辑。

以上是关于核心数据对多关系 NSPredicate 来获取的主要内容,如果未能解决你的问题,请参考以下文章

核心数据:NSPredicate 一对多对多关系

核心数据 - 从多对多关系构建 NSPredicate

NSPredicate 在核心数据中的多对多关系

具有多对多关系的核心数据 - 在 SUBQUERY 中使用 ALL 创建 NSPredicate

核心数据:使用 SQLITE 存储类型时,包含对多关系的 NSPredicate 不会产生任何结果

使用 NSPredicate 获取一对多关系值