我寫的使用核心數據的大多數應用程序都遵循常見模式 - 模型類繼承自NSManagedObject
並通過插入到NSManagedObjectContext
中創建。去耦核心數據
由於我評估了幾個上了一個新方項目不同的持久性選項,我很想找到一個方法來分離出從代碼的其餘部分的核心數據的實現。例如,我可能會使用使用協議定義的DataStore
的概念。它要求任何實現提供某些功能。例如getCars
,addCar
和deleteCar
。該應用程序不需要知道是否從核心數據,領域,本地文件等中獲取。
我遇到的一個核心數據實現DataStore
的一個直接問題是,儘快Car
加入作爲實體數據模型,我不能除了通過指定初始化,一個希望將上下文插入到創建Car
對象。這顯然不會飛,因爲整個問題是要從各種視圖控制器和其他類中分離出NSManagedObjectContext
等的任何知識。
我想使用一些其他的名字都是我的核心數據實體(例如,CDCar
),然後從CDCar
和Car
將用於映射到/一串代碼。或者可能爲應用程序中的通用Car
制定協議,CDCar
將符合該協議。有沒有更常見的方法呢?
請記住,通過使用額外的層,像你的'Car'對象,你將失去最強大的CoreData機制,這是'斷層'特別是關係錯誤。在獲取'Car'時,您還需要獲取'Engine'實體,'Owner'實體等。您將不得不爲所有相關對象構建圖形。 – psci
謝謝,是的,我沒有考慮到這一點。可能是一個交易破壞者。 –