2014-03-06 77 views
0

我正在更新我的核心數據模型,以包括更多的實體和屬性,並需要一些指導,當涉及到關係和NSManagedObjectSubclasses。核心數據輕量級遷移與NSManagedObject子類和關係

我已經按照這裏的指導http://www.raywenderlich.com/27657/how-to-perform-a-lightweight-core-data-migration成功設法添加我的應用程序的新模型版本,添加一個具有屬性的新實體並將關係設置爲另一個實體。我也成功地更新了AppDelegate設置。

這工作得很好。不過,我需要爲我的新實體生成一個NSManagedObject子類,並用它的NSManagedObjectSubclass更新與另一個實體的關係。

我已經測試了我的應用程序,它仍然在處理數據,但是如果我爲新實體生成新的NSmanagedObject子類併爲與此新實體有關係的其他實體重新生成NSManagedOBject子類,那是否需要我從模型不匹配的手機中刪除應用程序?

我還沒有嘗試過,因爲我需要在進行更改之前對其進行測試,但我需要一些關於此問題的指導。

+0

您是否在說您對模型進行了一些更改,在設備上進行了測試,並且您希望對模型進行額外的*更改?如果是這樣,你使用任何類型的源代碼控制? –

+0

謝謝特雷弗 - 對不起,我只是提供一些進一步的信息。我已經創建了一個新的模型,其中包含與現有模型的新實體和關係,更新了AppDelegate代碼並在設備上進行了測試,並且工作正常。但是,我需要從新實體中生成一個新的NSManagedObject子類,並且還要將關係的另一端的實體重新生成爲這個新實體..並且我還沒有測試該部分,因爲我擔心這會影響現有數據庫?或者它會好嗎?沒有文檔指出使用輕量級的NSManagedObject子類 – amitsbajaj

回答

2

遷移僅影響持久性存儲,請確保它與您的託管對象模型相匹配。

你NSManagedObject子類使用模型和持久性存儲,但他們沒有影響它。因此,您可以安全地繼續下一步:確保您的NSManagedObject子類(以及您的應用程序的其他部分)已更新,以處理新更新的託管對象模型的結構。

但只是要說清楚:如果您再次更改型號(調整關係等),那麼您的測試設備的數據庫可能會變得不兼容,您可能需要重新開始遷移測試。

這就是爲什麼我問你是否使用源代碼管理。您幾乎可以肯定希望構建和安裝應用程序的以前版本,以便您可以重複測試遷移。

+0

親愛的特雷弗 - 我對最近的答覆表示歉意,但這確實是非常有幫助的。正如你所說,今天早上與NSManagedObject子類一起工作,它不會影響模型,我可以從舊版本遷移。我使用內置在Xcode中的git,並且我有多箇舊版本的應用程序副本,以及2個專用於舊版本的設備,因此我也可以測試這些遷移。非常感謝 - 這真的幫助我進步! – amitsbajaj

相關問題