2011-06-30 29 views
1

我有一個應用程序,它有一個核心數據數據庫維護其信息。 很明顯,我有一個managedObjectModel和一個persistentStoreCoordinator管理應用程序的數據。導出CoreData數據庫的一部分

我想將它的一小部分作爲單獨的文件/存儲(通過另一個協調器?)導出,以便可以將其發送/通過電子郵件發送給具有相同應用程序的其他人並打開併合併到其內容中。

很明顯,合併部分有粘性的可能性,但我已經準備好了。任何人都有技巧,陷阱或最佳實踐方面的指導,建議和經驗?

回答

1

不要試圖在數據庫級別執行此操作。核心數據的數據庫僅僅是一個實現問題......它可能在未來發生變化,而且您不應該直接依賴數據庫。取而代之的是,將需要共享的對象(對象,不是數據庫條目),序列化爲某種傳輸格式(如JSON或NSCoder),並在接收端進行解碼。

+0

看起來像是和任意語句 - 有許多基於文檔的應用程序使用核心數據作爲存儲。數據庫格式不會比我的數據模型(它是版本化的)更經常變化。 NSCoder編碼文件與核心數據一樣易受版本控制問題影響。更不用說了......(iOS 5.0 NDA評論在這裏) – bshirley

0

您可以在一個上下文中將任意數量的多個持久性存儲和模型一起網格化。唯一的主要限制是(1)不能在不同模型中擁有同名實體,(2)不能在商店之間建立關係。

就你而言,你很可能會使用一個模型和兩個商店。您可以使用配置屬性將不同的實體分配到不同的商店(請參閱文檔)。我建議創建一個「主」配置,以保存實際的應用程序數據,然後使用「導出」配置來處理您的導出。導出配置中的實體應該是您主要實體的子實體。這樣他們將繼承主要實體的所有屬性和關係。將主配置分配給主存儲,並將導出配置分配給導出文件。

當您想要導出數據時,您需要將主要實體克隆到導出配置中的子實體,然後將其保存到導出持久性存儲中。要導入數據,只需改變過程。