2012-03-14 46 views
0

我之前問過一個關於SQLite遷移到Core Data的問題,並給出了根據我需要保留持久存儲的獨立答案「只讀」店和「自定義存儲」:核心數據:使用多個上下文獨立持久存儲與使用單個上下文的獨立持久存儲

Updating Application to use Core Data from previous double SQLite only persistent store

我開始這個應用程序的開發,而且目前我打算創造應有2對獨立的環境的事實,我可以預見只讀卡對象模型在未來版本中保持不變,而自定義模型可能會更改。這樣我就只需要定製對象模型的版本,並繼續使用相同的只讀存儲區運送應用程序。

這是一個明智的方式嗎?如果是這樣,我應該注意哪些障礙?如果不是,那麼更好的選擇是什麼?

+0

可能有幫助,但我最近看到了[分割持久性商店]的一個很好的例子(http://cocoawithlove.com/2011/06/process-of-writing-ios-application.html)。 – rickster 2012-03-14 18:09:19

回答

2

只要兩個模型中的實體不相互衝突,就可以在相同的上下文中將兩個模型一起使用。您可以使用+modelByMergingModels:方法在運行時從兩個或更多模型創建單個模型。使用該新模型初始化持久存儲協調器,並將該PSC添加到您的上下文中。

我確定你可以使用單獨的託管對象上下文使你的代碼正常工作,但是對於Core Data來說很好的一件事是,如果你設置正確,它會管理查找你的細節對象爲你。對於只讀數據和用戶數據使用單個上下文似乎是保持簡單代碼的積極步驟。

+0

你能澄清你的意思嗎?確保「兩個模型不會相互衝突?」 – 5StringRyan 2012-03-14 18:20:10

+0

@ 5StringRyan我的意思是說,他們都不會嘗試定義具有相同名稱的實體。如果在一個模型中有一個名爲'Product'的實體,那麼在另一個模型中使用另一個具有相同名稱的實體可能是一個壞主意。 – Caleb 2012-03-14 18:32:00

+0

如果您使用'+ modelByMergingModels,則光偏移將不起作用:'http://stackoverflow.com/questions/10940545/core-data-lightweight-migrations-and-multiple-core-data-model-files-xcdatamod/13852084# 13852084 – 2014-04-14 02:00:52

相關問題