2014-07-12 51 views
5

假設我有一個具有3個屬性的模型實體。
然後,我爲該實體生成NSManagedobject子類,併爲該類添加自定義方法以及屬性。
在稍後的日子,我爲這個實體添加了一些新的屬性。更新核心數據模型實體和支持的NSManagedobject子類

目的
我要將備份NSManagedobject子類,以反映這些新的屬性。

問題
我看是要唯一的解決辦法{編輯 - >創建NSManagedobject子類}在Xcode,但這種方式會覆蓋類。

問題
有沒有辦法更新實體和支持NSManagedobject子類,而重寫類。

回答

8

手工編輯託管對象的子類很好。 假設您爲實體添加了一個新的字符串屬性。您將一個屬性添加到您的被管理對象的子類:

@property (nonatomic, copy) NSString *myAttribute; 

並將其標記爲動態:

@dynamic myAttribute; 

完成!讓Xcode生成類別旨在提供起始點。它沒有做任何超級特殊的事情來將你的財產與實體屬性聯繫起來。

+0

Awww ok我明白了。謝謝。 –

+4

使用一個類別,只要在編輯器中進行更改而不影響類別中的重載行爲,就可以重新生成子類。 – lostintranslation

3

這是您始終面臨的核心數據問題。顯然,你可以做什麼@quellish建議並手動修改文件,但一個簡單的方法可以添加自定義行爲到你的類,並保留自動生成NSManagedObject .m和.h文件的能力是使用類別。

我通常在類別中添加所有自定義行爲,例如MyNSManagedObject (Management)等,每當我更新模型中的屬性時,我只是使用模型編輯器重新生成父文件,並且該類別中的所有自定義代碼保持不變。

+1

我們也做類似的事情。我們編寫了擴展子類的.extension文件,然後在其中添加任何函數或附加代碼,因此覆蓋不會成爲問題。 – Unome

0

你可以這樣做:

從核心數據編輯器菜單 選擇「創建NSManagedObject子類......」刪除並重新爲您更新的模型這個實現文件。

然後,您將刪除已有的文件,並創建新的文件。實際上,我們親愛的Xcode IDE暗示了我們這樣做,從附加的屏幕截圖可以看出。 Screenshot