1

我需要将我的对象保存在永久内存中。我现在使用的选项是在我的应用程序退出之前将我的对象保存在 NSUserDefaults 中,并在我的应用程序开始运行时检索它们。这种方法不是很方便,因为万一应用程序崩溃,我可能会丢失重要数据。有什么方法可以存储我的对象,但是当一个对象的属性发生变化时,这个变化会自动保存在磁盘中吗?除此之外,使用该架构可能会弄乱 ram 中的对象和磁盘中的对象。

例如

-> Load objects from memory
-> [object1 setValue:@"5"]
-> Application crashes

崩溃后,当用户打开应用程序时,值@“5”将不可用,因为我从未保存过数据。

是否有任何替代方法可以使代码更安全和可维护?CoreData 是解决这个问题的好选择,还是开销?

4

2 回答 2

2

如果需要保存数据,CoreData 是最好的。如果需要,您可以在每次更改后保存。

如果保存信息非常重要,您可能想弄清楚是什么导致/正在导致您的应用程序崩溃并修复它。如果您的应用程序随机崩溃,那么无论解决方案多么好,您都可能会丢失一些数据。

于 2012-08-13T16:41:48.363 回答
1

当值更改时立即保存数据确实不是最佳选择。这对于应用程序性能来说太昂贵了。NSUserDefaults当应用程序被强制关闭或在后台输入时,您必须继续使用来存储值。

您的应用程序是由您设计的。它不能崩溃,但即使它崩溃了,也不要担心。Anamolies 无法真正处理。

于 2012-08-13T16:42:00.840 回答