在NSManagedObjectContext上调用saveContext太多了

时间:2014-04-12 22:24:49

标签: ios core-data

我想知道你是否可以经常调用NSManagedObjectContext。我的保存代码是标准的UIApplicationDelegate代码:

- (void)saveContext
{
    NSError *error = nil;
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
    if (managedObjectContext != nil) {
        if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
            // Replace this implementation with code to handle the error appropriately.
            // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
        }
    }
}

我有一个应用程序,它会调出一个模态来创建一个新的Alarm类型对象。模态有几个屏幕,就像重复的日子。与Apple的重复日视图类似,我推出了一个新的viewController,它只显示了重复的日子。当我回到模式的主屏幕,用户输入警报的名称时,我可以调用saveContext吗?我想我想知道是否需要担心为较小的屏幕调用saveContext,比如重复几天,然后用户在主模式屏幕上点击Done,我立即再次调用saveContext。

1 个答案:

答案 0 :(得分:0)

如果您在整个应用程序中只有一个NSManagedObjectContext,则不需要经常在上下文中调用-save(只要您的应用没有'崩溃!)。在这种情况下,如果某些信息已更改,我通常会在离开编辑屏幕时保存,并保存在应用代理-applicationDidEnterBackground:中。

如果您有很多更改(新对象,更新等),那么调用save会有点贵,因为它必须将这些更改写入持久存储(磁盘上的文件 - 假设您正在使用通常的NSPersistedStore