这是一个Objective-J/Cappuccino的问题,但我添加了可可标记,因为框架非常相似。管理没有CoreData的逆关系
卡布奇诺的缺点之一是CoreData尚未被移植过,因此您必须手动创建所有模型对象。
在CoreData中,您的反比关系会自动为您进行管理......如果将对象添加到另一个对象中的多对多关系中,则可以在两个方向上遍历该图。
没有CoreData,是否有任何干净的方法来自动设置这些反相关系?
有关更具体的示例,我们以典型的Department和Employees示例为例。要使用rails术语,Department对象具有许多Employees和Employee属于Department。
所以我们的Department模型有一个NSMutableSet(或CPMutableSet)“employees”,它包含一组Employees,而我们的Employee模型有一个变量“department”指向拥有它的Department模型。
是否有一种简单的方法可以使我在将新的Employee模型添加到集合中时自动设置反向关系(employee.department)?或者相反:如果我设置员工的部门模型,那么它会自动添加到该部门的员工组中?
我知道我正在创建一个对象,“ValidatedModel”表示我的所有模型的子类,它使用KVO添加了一些设置反向关系的方法。但是我担心我做了很多毫无意义的工作,并且已经有一种更简单的方法来做到这一点。
有人可以把我的顾虑休息吗?
谢谢,这基本上是我在做什么。 (除了使用KVO触发任何一方改变时,并添加另一方。) 因此,它看起来像我在正确的轨道上,谢谢。 – 2009-10-05 19:17:20
如果这就是你正在做的事,你就走在正确的轨道上。我认为我的方法可能会稍微简单一点,因为要做KVO的开销,但任何一种方式都应该正常工作。 – Alex 2009-10-05 19:35:09
我使用KVO的主要原因是我没有修改生成的访问器。 相反,在我的init方法中,我调用一个方法来描述关系的类型,使用哪个属性以及属性的逆关系。这会自动设置观察者等。 我将在我完成所有工作后共享代码。 – 2009-10-05 19:38:27