我想知道你是否可以经常调用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。
答案 0 :(得分:0)
如果您在整个应用程序中只有一个NSManagedObjectContext
,则不需要经常在上下文中调用-save
(只要您的应用没有'崩溃!)。在这种情况下,如果某些信息已更改,我通常会在离开编辑屏幕时保存,并保存在应用代理-applicationDidEnterBackground:
中。
如果您有很多更改(新对象,更新等),那么调用save会有点贵,因为它必须将这些更改写入持久存储(磁盘上的文件 - 假设您正在使用通常的NSPersistedStore
。