我正在创建一个用于显示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,随着更多数据的添加,它会增加。