何时在Swift中保存Singleton数据?

时间:2017-02-13 16:39:26

标签: ios swift singleton

所以我使用全局单例来管理我的应用程序数据,我需要在整个应用程序启动过程中保持持久性。因此,我将单例的数据写入文件,并在init方法中读取它们。

我的问题是何时将单例保存回文件。现在每当我对我的单身人员进行任何更改时,我也会调用.saveData()来保存它们,但这意味着我覆盖的文件比我需要的要多得多。

我正在尝试防止由于我的应用终止而造成的任何数据丢失,我正考虑将数据保存在applicationWillResignActiveapplicationDidEnterBackground内,而不是每次进行更改时都保存。在阅读swift iBook时遇到的另一个想法是在我的单例saveData中实际调用deinit {},但我不确定析构函数是否适合将所有内容写入文件的工作摧毁物体。

上述任何一种方法都保证在我想要的那天保存我的数据吗? (假设我的应用程序没有崩溃,因为如果它确实可以理解某些数据将会丢失)

拨打saveData()方法的最佳时间是什么时候?

PS:未来我将使用CoreData来保存我的数据而不是文件,但是现在我需要启动并运行我的数据以将应用程序的其余部分(UI,动画,网络等)放在一起。

1 个答案:

答案 0 :(得分:1)

我会使用applicationDidEnterBackgroundapplicationWillTerminate的组合。

applicationWillTerminate - 这是您在应用终止前进行清理/保存的'goto'方法。但是,如果应用程序在终止前暂停,则不会触发。

applicationDidEnterBackground - 因为如果应用程序进程首先被挂起,之前的方法不会触发,你也会想要在后台触发,因为应用程序将在暂停之前进入后台({{1单独就不够了)