更新managedObjectContext时,是否可以在可能发布的视图控制器中进行保存设置,或者appDelegate是否应该保存managedObjectContext,以便即使释放了viewController,保存也会完成?
我倾向于将保存步骤移动到我的appDelegate并让viewControllers调用[appDelegate saveContext];在进行更新的时候,虽然也许这样做没有实际意义,因为viewController在完成保存到CD之前都不会完成发布......?
例如,这两个动作之间是否有任何区别,从subViewController完成:
[appDelegate.managedObjectContext save:&error]
和
[appDlegate saveContext]
appDelegate中有一个运行[managedObjectContext save:& error]的方法
谢谢, 萨姆
答案 0 :(得分:0)
如果您只是通过应用程序使用一个managedObjectContext,那么将保存功能保留在应用程序委托中并不是一个坏主意,这样无论视图控制器的状态如何,通过应用程序的生命周期,任何更新都将被保存当应用程序终止时。
话虽这么说,我发现添加额外的保存点很有用,有时在视图控制器中,这将在执行一些重要更新后保存数据库。这样,即使应用程序崩溃或者最终的保存操作无法完成,我也会保存我的数据。
我是核心数据的相对新手,所以如果这是不好的做法,请通知我。
答案 1 :(得分:0)
猜测您的应用程序是单线程的,保证在视图控制器发布之前保存将完成,因为线程将阻止保存。
如果您正在运行多线程应用程序;然后
您不应该在后台线程上保存,这在Core Data中是危险的。
您不应该访问后台线程上的视图控制器,因为所有与视图相关的活动都应该在主线程上执行。
因此,没有“正确”的情况,您无需担心-save:
无法完成,无论您将其称为什么对象,因为它是阻止呼叫。