2013-06-18 40 views
0

樂狂歡交換數據的核心數據庫18朱安2013 12點50分29秒UTC + 2,Appsido一個écrit: 你好,RestKit> [RestKit 0.9]在運行時

我現在面臨一個問題,試圖建立一個新的持久存儲在運行時並使用這個新的持久存儲。

要創建新的持久性商店,我使用下面的代碼片段

NSURL *modelUrl = [[NSBundle bundleForClass:[self class]] URLForResource:@"AppDataModel" withExtension:@"momd"]; 

NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelUrl]; 

[[AppDelegate appDelegate] objectManager].objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:@"AppStore" 
                             usingSeedDatabaseName:nil 
                             managedObjectModel: managedObjectModel 
                                delegate:nil]; 

這工作得很好,創造了iPhone設備的文件系統上的一個新的持久性存儲。

然後創建一個新的對象,並將其與下面的代碼片段

MyEntity *f = [MyEntity object]; 
[f setValue:[NSNumber numberWithInt:70] forKey:@"id"]; 
[f setValue:@"New Family" forKey:@"name"]; 

NSError *error; 
[[f managedObjectContext] save:&error]; 
if (error) NSLog(@"error > %@", error); 

對象保存在持久性存儲保存在持久性存儲,但沒有新的創造之一,但舊的。

因此,可以基於同一數據模型文件定義多個持久性存儲,並在運行時將其交換到另一個,並將數據保存在每個持久性存儲實例中。

感謝您的支持。

回答

0

https://github.com/magicalpanda/MagicalRecord

// get the default context 
[NSManagedObjectContext MR_defaultContext]; 
// create the other context 
NSManagedObjectContext *myNewContext = [NSManagedObjectContext MR_context]; 
// set the new default 
[NSManagedObjectContext MR_setDefaultContext:myNewContext]; 

你需要的地方strore的環境,讓他們之間的交換,也許一本字典。

+0

感謝指點我到神奇的記錄,但遺憾的是我沒有使用它。該應用程序基於RestKit,它具有隻讀的帶有ManagedObjectContext的RKManagedObjectStore。在我必須更改應用程序核心(RestKit to Magical Records)之前,我正在尋找一個RestKit解決方案 – Appsido

+0

啊我明白了你的觀點,也許restkit會將其NSManagedObjectContext基於神奇記錄新創建的上下文。我會嘗試 – Appsido

+0

我試過使用魔法記錄片段,但restkit似乎沒有使用新創建的上下文 – Appsido

0

你應該先刪除舊的persistentStore與此代碼

[objectManager.objectStore deletePersistantStore];