我有一个可以导入和导出数据的核心数据模型。我的应用程序的工作方式是从数据库下载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