我有一個可以導入和導出數據的核心數據模型。我的應用程序的工作方式是從數據庫下載JSON文件,解析它,刷新核心數據模型,然後再次添加數據(實際上刷新本地數據模型)。核心數據直到應用程序重新啓動纔會更改
如果我對數據庫進行了更改,則更改將反映在JSON文件中,但在重新啓動(又名結束應用程序,再次打開)應用程序之前,不會反映在覈心數據模型中。
我確定它必須與我沖洗數據庫的方式有關,但我不能把它放在手指上。我在下面列出了一些代碼來提供幫助。
我使用沖洗掉數據模型的方法:
我使用,將數據添加到數據模型的代碼- (void)resetCoreData;
{
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"AppWithCoreData.sqlite"];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager removeItemAtURL:storeURL error:NULL];
NSError* error = nil;
if([fileManager fileExistsAtPath:[NSString stringWithContentsOfURL:storeURL encoding:NSASCIIStringEncoding error:&error]])
{
[fileManager removeItemAtURL:storeURL error:nil];
}
persistentStoreCoordinator = nil;
managedObjectContext = nil;
[self managedObjectContext]; // Rebuild Object Context
}
一行:
[model setValue:[dictionary objectForKey:@"eventID"] forKey:@"eventID"];
之後您會重新提取數據嗎?也看看這個:http://stackoverflow.com/a/5770216/730701。唯一的區別是,在將上下文設置爲nil之前刪除文件,然後該用戶執行此操作。 – Adam 2012-07-22 15:52:57
是的,我調用這個方法,然後重新獲取數據。它保存沒有任何錯誤。當我在設置上下文後移動這兩行後嘗試保存時,出現錯誤 無法保存:操作無法完成。 (可可錯誤134030.) – 2012-07-22 16:55:50