這是一個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