关系循环与核心数据

时间:2012-09-20 11:25:23

标签: core-data entity-relationship cyclic-reference

我对Core Data存在概念性问题。

我有一个名为OBJ的实体,它在关系中有一个OBJ实体。当我测试我的模型时,我得到了非常有说服力的消息,例如"An error occured."

对于每个OBJ实体,我希望定义一个或多个与另一个OBJ实体关联的ACTION。所以我猜我的错误来自循环,但不确定。

首先,我定义了一个反向关系(正如doc所建议的那样,关系应该总是有反向关系):

ENTITY OBJ
Attributes:
name    
status
Relationships:
actions
<-------- >>

ENTITY ACTION    
Attributes:
name   
Relationships:
obj

嗯,它不起作用,因为OBJ总是指自己。因此我脱离了关系。 ACTION指向OBJ,OBJ指向几个ACTION,没有互惠。错误信息。

我的基本想法是,如果另一个OBJ的状态允许,每个与特定OBJ关联的ACTION都可以运行。

如何构建这个MVC一致?基本的想法似乎很简单,这是他的成就。这是一个错误的核心数据建模?我在控制器级别犯了错误吗?接口?请注意,在这个级别我没有写一行代码。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果你想

  

定义与另一个OBJ相关联的一个或多个ACTIONS

这意味着一个OBJ可以有很多ACTIONS,一个ACTION可以有很多OBJ。

因此,您应该在两个方向上定义ACTION和OBJ之间的关系。

OBJ.actions <<-------->> ACTION.obj

除非您打算拥有&#34;子对象&#34; (例如CATEGORY和subCATEGORY)你不应该在OBJ和OBJ之间建立关系。

答案 1 :(得分:0)

我通过在“OBJ”和“ACTION”之间添加新关系找到了解决方案。

OBJ                           ACTION
…                             …
Relationships                 Relationships
targetObject     <------->>   actions
conditionObject  <------->>   condition

如果不这样做,则反向关系总是指相同的(自身)对象。所以,通过改变关系,我正在改变对象本身!

通过添加新的一对多关系,我可以间接地创建OBJ到OBJ关系(targetObject和conditionObject可以是同一个)并保持图形一致。

每一天,我都更清楚“核心数据不适合初学者”是指......