我需要将对象保存在永久内存中。我现在使用的选项是在我的应用程序退出之前将我的对象保存在NSUserDefaults中,并在我的应用程序开始运行时检索它们。这种方法不是很方便,因为在应用程序崩溃的情况下,我可能会丢失重要数据。有没有办法存储我的对象,但是当一个对象的属性发生变化时,这个变化会自动保存在磁盘中吗?除此之外,使用该架构存在使ram中的对象和磁盘中的对象混乱的危险。
例如
-> Load objects from memory
-> [object1 setValue:@"5"]
-> Application crashes
崩溃后,当用户打开应用程序时,值“@ 5”将不可用,因为我从未保存过数据。
是否有任何替代方案可以使代码更安全和可维护? CoreData是这个问题的一个很好的选择,还是一个开销?
答案 0 :(得分:2)
如果您需要保存数据,CoreData是最好的。如果需要,您可以在每次更改后保存。
如果保存信息非常重要,您可能想知道可能导致/导致应用程序崩溃的原因并解决该问题。无论解决方案有多好,如果您的应用程序随机崩溃,您可能会丢失一些数据。
答案 1 :(得分:1)
当值发生变化时,立即保存数据真的不是最佳选择。这对于应用程序性能来说太昂贵了。当应用程序强制关闭或在后台输入时,您必须继续使用NSUserDefaults
来存储值。
您的应用是由您设计的。 必须不会崩溃,但即使有,也不要担心。无法真正处理Anamolies。