核心数据 - 找出两个对象之间是不是存在关系

Posted

技术标签:

【中文标题】核心数据 - 找出两个对象之间是不是存在关系【英文标题】:Core Data - Find out if a relationship between two objects exists核心数据 - 找出两个对象之间是否存在关系 【发布时间】:2013-01-23 14:07:21 【问题描述】:

我正在制作一个包含调查问卷的应用程序,并且我正在使用 Core Data 来保存它的所有数据。

共有三个实体: 人(接受问卷的人), 问题(问题), QuestionResult(问题的结果)

Person 与 QuestionResult 相关联,而 QuestionResult 则通过关系链接到 Question。

给定一个 Person 和 Question 实体,我希望能够找到两者之间是否存在关联的 QuestionResult 对象。这可以使用 NSPredicate 完成吗?

【问题讨论】:

【参考方案1】:

设置:

Person <<------->> Question
Person <-------->> Answer
Question <------>> Answer

解决办法:

NSSet *filtered = [person.answers filteredSetUsingPredicate:
   [NSPredicate predicateWithFormat:@"question == %@", questionObject]];
BOOL thereIsAnAnswer = filtered.count != 0;

或者,如果你不需要给一个人分配一个问题,除非有答案,你可以简化模型:

Person <---------->> Answer <<----------> Question;

谓词将完全相同。

【讨论】:

以上是关于核心数据 - 找出两个对象之间是不是存在关系的主要内容,如果未能解决你的问题,请参考以下文章

对象之间的核心数据关系

RestKit、核心数据和关系问题。父对象不识别子集

核心数据 - 具有一对多关系的实体正在检索除“关系”实体之外的所有实体对象的属性

子查询谓词核心数据

核心数据对象比较

iPhones SDK:使用核心数据设置关系属性对象?