2011-02-23 52 views
1

我有一個實體(Order)與實體Item有多對多的關係,它與實體注有多對多的關係。如果價格更改爲備註或添加了備註,則關聯訂單的'價格'屬性必須更新。核心數據建模問題(如何根據關係的關係更新屬性?)

現在,我的解決方案是讓所有Order對象註冊NSManagedObjectContextDidChange通知,並檢查所有插入/更改的對象,以查看這些對象中的任何一個是否是訂單項目的註釋之一。但是,這樣做效率低下,而且很不方便,導致可以優化的幾個性能問題,但我開始意識到我的解決方案是有問題的,不一定是問題。

那麼,最好的辦法是什麼?

編輯:爲了回答Rog帶來的問題:我正在尋找將更改傳播到模型數據,這些數據由視圖控制器通過KVO觀察到。我注意到的問題是,如果與某個項目相關的Note的價格被調整,則無法在Core Data中對此進行說明。如果我在物品上使用keyPathsForAffectingPrice,並返回「註釋」,那麼只會考慮是否插入/刪除了註釋,而不是在調整註釋價格時。

如果這不是核心數據,我會寫我自己的存取做筆記的價格,只是說[self.item willChangeValueForKey:@ 「價格」],self.price = X,[self.item didChangeValueForKey:@ 「價錢」];但這是不可能的,因爲我不能在Core Data中執行自定義訪問器,對吧?

回答

2

我們很可能需要更多關於代碼的細節才能提供幫助 - 即您是否在尋找將更改傳播到模型數據或UI的方式?

您目前使用的是fetchedResultsController嗎?

我看到它的方式,如果您的訂單包含項目並且項目包含註釋,則對您的「子」屬性的任何更新將立即生效(假設您已正確設置反向關係)。

然後,如果您正在尋找相應更新用戶界面的方法,那麼我們需要知道您當前如何使用Coredata實體獲取和填充視圖。

+0

問題修改,以滿足您的問題 - 有一個FRC。 – refulgentis 2011-02-28 23:24:18