【问题标题】:When to update the CoreData persistent container values何时更新 CoreData 持久化容器值
【发布时间】:2017-10-01 07:59:13
【问题描述】:

我的 UIViewController 带有一些之前预先添加的信息,并且在此 UIViewController 中仅显示 UITextFields 中的信息,因此用户可以随时更新它们。

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

直到我添加了imagePickerController,以便用户以后可以编辑照片。当imagePickerController 被调用时,它会触发viewWillDisappear 将数据保存到CoreData。

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

我没有使用 UIButton 手动保存数据,它就像原生 iOS Notes 应用程序一样,当您关闭便笺编辑器视图时它会自动保存数据。

我尝试将数据保存在 unwind segue 中,但也没有用。

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

【问题讨论】:

    标签: ios swift core-data uiviewcontroller lifecycle


    【解决方案1】:

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

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

    如果有任何自动保存的内容,我建议您在用户更改文本字段(或关闭文本字段)时保存。这对于用户在编辑时终止应用程序的情况也是万无一失的。

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

    【讨论】:

    • 我认为最好保存到 CoreData 一次,而不是在用户尚未完成编辑时访问相同的上下文进行保存。但对于更广泛的场景,是的,用户可以出于任何原因随时中止编辑。
    • 嗯,那是“自动”。您可以设置某种锁定,这样它就不会经常保存,但由于这是用户交互触发的,它会足够慢。
    猜你喜欢
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 2019-10-31
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    相关资源
    最近更新 更多