0

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

4

0 回答 0