我正在创建一个用于显示 Cora Data 对象的应用程序。该应用程序不应创建或删除实体,但我想让用户有机会将实体添加到他们的收藏夹中。为此,我添加了一个布尔“isFavorite”属性。当用户添加实体时,我会像这样更新它:
[_currentObject setValue:[NSNumber numberWithBool:YES] forKey:@"isFavorite"];
[_managedObjectContext refreshObject:_currentObject mergeChanges:YES];
当应用程序关闭时,我像这样保存上下文:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[self saveContext];
}
- (void)saveContext
{
NSError *error = nil;
NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
if (managedObjectContext != nil) {
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
NSLog(@"save done...");
}
效果很好,但问题是,完成保存大约需要 10 秒。当用户按下主页按钮然后关闭应用程序(双击主页按钮)时,上下文不会完全保存。
是否有更快(或保存)的方法来保存上下文?我不需要再次保存孔文件,只需保存已更改的对象...
我的文件是二进制文件,大小约为 5 MB,并且会随着添加更多数据而增加。