CoreData:通过关系访问对象

时间:2013-08-21 03:18:18

标签: core-data relationships

CoreData中的三个实体:

  • User
  • EntityA
  • EntityB

关系:

  • EntityAUser&的一对多关系逆
  • EntityAEntityB&的一对一关系逆
  • User& EntityB没有关系

创建的对象:

  • UserA创建objectA类型EntityA列出UserB和UserC作为关系对象。
  • UserA还会创建ObjectB类型EntityB,列出ObjectA,作为其关系对象

访问对象

  • UserBEntityA中登录并抓取并成功下载ObjectA

问题:UserB能否访问ObjectB?如果是,可以使用以下代码UserB访问ObjectB:NSString *value = [ObjectA.OneToOneRelationshipBetweenEntityAandB valueForkey"@attributeFromObjectB"];

如果没有,UserB如何访问ObjectB?我需要建立什么样的关系?

我之前曾问过类似的问题,但我认为我提供的信息过多,令人困惑。我删除了这个问题,希望将其简化为此问题。

感谢。

1 个答案:

答案 0 :(得分:2)

假设统一的核心数据模型,只要存在关系,您就可以轻松访问对象。

为了便于阅读,我正在重新定义您的变量/关系名称:

User <<-----> Group <<-----> Community

社区有很多群体有很多用户。这很简单,看起来像一个可行的设置。

澄清:用户无法创建对象。只有一个程序可以做到这一点。

Group *newGroup = [NSEntityDescription 
       insertNewinsertNewObjectForEntityForName:@Group"
       inManagedObjectContext:self.managedObjectContext]; 

Community *newCommunity = [NSEntityDescription 
       insertNewinsertNewObjectForEntityForName:@Community"
       inManagedObjectContext:self.managedObjectContext]; 


userA.group = newGroup; 
userB.group = newGroup;
newGroup.community = newCommunity;

现在userA和userB都属于newGroup,该组是newCommunity中的一个组。 userB链接到该组,因此访问社区非常容易:

Community *aCommunity = userB.group.community;