iOS CoreData - 重建关系

时间:2012-03-24 15:11:17

标签: objective-c ios cocoa-touch cocoa core-data

我想知道是否有可能在Core Data中“重建”关系。

基本上,我在创建实体时搞砸了,从SQL服务器获取数据我将实体填充为表(一个表一个表),现在似乎关系不起作用。

我们举一个例子:

我已经用我的两个实体(部门和员工)建立了我的模型,并且具有一对多的关系“myRelationWithDepartment”(一个部门包括许多员工),并相应地生成了托管对象子类。

我从我的SQL服务器获得了表部门和表员工,并将所有员工插入到我的实体员工中,然后(因为我必须检索第一个员工)我的实体部门中的所有部门,使用Core Data,保存上下文等。一切都很好,只是关系不起作用。

现在我可以向某个部门或员工发送获取请求,但它运行正常。但是,如果我找回一名员工并执行此操作:

[[anEmployee myRelationWithDepartment] departmentName];

它返回nil,没有编译警告或错误,似乎没有任何部门与员工相关联。

所以我认为关系不起作用。

我在模型中包含了我在SQL表中的“id”,因此我可以手动链接它们(但实际上我有多个实体)。


我已经阅读了核心数据指南并发现了这个:

  

[aDepartment.employees addObject:newEmployee]; //不要这样做!

     

然后不会发出KVO更改通知,反向关系也不会正确更新。

     

回想一下,dot只是调用了访问器方法,所以出于同样的原因:

     

[[aDepartment employees] addObject:newEmployee]; //也不要这样做!

这就是为什么我认为关系形态严重的原因。有没有办法在之后重建关系(因为我在实体之间的模型中共享一些id)?

1 个答案:

答案 0 :(得分:0)

我在Apple的文档中挖掘了更多内容,并且必须手动填写关系:

创建关系" link" :

anEmployee.myRelationWithDepartment = departmentObject;

或者,您可以使用:

[department addEmployeeObject:anEmployee];

然后,在获取对象时,您可以访问相关实体的属性。

问题在于核心数据已经销售了#34;因为一切都是独立完成的,而且实际上它乍一看似乎更深。