我有一个核心数据模型,可以很好地导入和导出数据。我的应用程序的工作方式是从数据库下载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"];
答案 0 :(得分:2)
通常,当您需要将更改保存到核心数据存储时,需要保存它们。
要实现它,您需要致电
NSError* error = nil;
[managedObjectContext save:&error];
以这种方式,您执行的更改将保存到磁盘。实际上,当您只是更改某个特定实体的属性值时,它只能在内存中使用。
我认为更改仅在下次重新启动时可用,因为在您的应用委托中您监听applicationWillTerminate
委托并在那里保存上下文。您使用的是Xcode模板提供的核心数据堆栈吗?
如果可能的话,提供更多细节,也许我可以帮助你。
希望有所帮助。