2013-01-25 101 views
0

我正在研究一個小型的iPhone日誌記錄應用程序,我想保留位置數據的數據庫與用戶記錄的數據分開。核心數據 - 2個對象模型,1或2個託管對象上下文 - 哪個更好?

我有幾個原因分隔兩包括

1)我可能會推動與應用的更新週期性位置更新數據,我不希望冒險讓一個cockup,影響用戶的數據。

2)位置數據可能會矮小的用戶數據,從而synching和備份用戶文件如果兩者分開會發生更快。

所以給我打算有兩個持久性存儲是有在性能和編碼複雜度方面的優勢或劣勢有自己的持久化存儲與在每個2個獨立的環境中它兩個持久化存儲一個方面?

沒有想過這個,將不勝感激 - 我是有點的n00b當談到這個東西 - 在此先感謝

西蒙 。

回答

1

我在我的應用程序中實現了類似的事情,因爲我想將更新推入一組特定的數據加載我從2個數據庫中的數據。

我已經做到了,使用1個對象模型,1個管理對象上下文,但是2個持久性存儲,每一個加載不同的源碼文件的方式。爲此,我在數據模型文件中創建了2個配置,然後將相應的實體拖放到每個配置中。然後當你創建持久性商店這樣做:

[__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"Configuration1" URL:store1URL options:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil] error:&error]; 
[__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"Configuration2" URL:store2URL options:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil] error:&error]; 

我發現迄今爲止唯一的問題是你不能有商店之間的關係。 This answer顯示如何使用fetched屬性複製關係。

希望這會有所幫助。

+0

感謝您的和其他答案的鏈接。我一直在考慮兩個獨立的模型,但我想我知道你正在使用一個模型(這可能是從每個持久性存儲裝載某些實體)所做的。然而,它並沒有回答在兩個不同的上下文中單個上下文實現是否具有性能優勢的問題。對此有何想法? – SimonTheDiver

0

我實際上是能夠使用兩種不同的managedObjectContexts有兩種不同的模式和兩種不同的持久性存儲使用相同的應用程序。

這只是讓它們加載到應用程序委託上的問題,它們在整個應用程序中都可用。

我做什麼,我只是複製並粘貼完全相同的初始默認代碼,第一方面,並​​更名爲新形勢下,存儲和模式。

我爲什麼要這樣做?我有一個完全獨立的應用程序模塊,我沒有太多的控制權,我不想搞亂我的應用程序的邏輯,並能夠將它保存在代碼存儲庫的單獨分支中,爲主要分公司進行差異化承諾和櫻桃採摘增強。

相關問題