何时更新CoreData持久性容器值

时间:2017-05-03 13:02:10

标签: ios swift core-data uiviewcontroller lifecycle

我有UIViewController,其中包含之前预先添加的一些信息,并且在这个UIViewController中只显示UITextFields中的信息,以便用户可以随时更新它们。

用户写入新值后,我将值保存在Core Data中,特别是viewWillDisappear。那工作得非常好。

在我添加imagePickerController之前,用户可以在以后编辑照片。调用imagePickerController时,会触发viewWillDisappear将数据保存到CoreData。

当用户关闭此UIViewController并返回主UITableViewController时,我需要保存信息。

我没有使用UIButton手动保存数据,它就像本机iOS Notes应用程序一样,它会在您关闭注释编辑器视图时自动保存数据。

我试图将数据保存在unwind segue中,但这也无效。

我还需要在这个特定的UIViewController中保存新信息。所以,请告诉我是否有另一种ViewController生命周期的方法可以保存到CoreData。

1 个答案:

答案 0 :(得分:0)

如果在显示图像选择器时保存数据,为什么会出现问题?由于您自动保存数据,因此它似乎完全合法。

如果不是这种情况,那么您不希望自动执行此操作,但您希望明确地执行此操作。这意味着您需要一个保存按钮,或者您需要覆盖后退按钮,以便在用户返回时收到通知。这仍会产生其他问题,例如,如果用户滑动以解除视图控制器,会发生什么。

如果有任何自动保存的话,我会建议您在用户更改文本字段时保存(或解除其中一个)。对于用户在编辑时杀死应用程序的情况,这也是防弹的。

您需要确保的是,如果已存在新实体,则不会创建新实体。这应该很简单;将实体保存在视图控制器中的属性上,如果为null,则创建一个“保存”,否则修改当前的一个。通过公开公开属性,您还可以通过在导航到视图控制器之前将值设置为视图控制器,从而开箱即用的编辑功能(例如,从表视图中选择它时)。