所以我使用全局单例来管理我的应用程序数据,我需要在整个应用程序启动过程中保持持久性。因此,我将单例的数据写入文件,并在init方法中读取它们。
我的问题是何时将单例保存回文件。现在每当我对我的单身人员进行任何更改时,我也会调用.saveData()
来保存它们,但这意味着我覆盖的文件比我需要的要多得多。
我正在尝试防止由于我的应用终止而造成的任何数据丢失,我正考虑将数据保存在applicationWillResignActive
或applicationDidEnterBackground
内,而不是每次进行更改时都保存。在阅读swift iBook时遇到的另一个想法是在我的单例saveData
中实际调用deinit {}
,但我不确定析构函数是否适合将所有内容写入文件的工作摧毁物体。
上述任何一种方法都保证在我想要的那天保存我的数据吗? (假设我的应用程序没有崩溃,因为如果它确实可以理解某些数据将会丢失)
拨打saveData()
方法的最佳时间是什么时候?
答案 0 :(得分:1)
我会使用applicationDidEnterBackground
和applicationWillTerminate
的组合。
applicationWillTerminate
- 这是您在应用终止前进行清理/保存的'goto'方法。但是,如果应用程序在终止前暂停,则不会触发。
applicationDidEnterBackground
- 因为如果应用程序进程首先被挂起,之前的方法不会触发,你也会想要在后台触发,因为应用程序将在暂停之前进入后台({{1单独就不够了)