2012-08-13 92 views
1

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

例如

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

空难后,当用户打开应用程序时,值@“5”将不可用,因为我从来没有保存的数据。

有没有其他的选择,以使代码更安全和可维护? CoreData对于这个问题是一个很好的选择,还是一个开销?

回答

1

当值发生变化时,实际上并不是立即保存数据的最佳选择。对于应用程序性能来说太昂贵了。您必须继续使用NSUserDefaults来存储应用强制关闭或在后台输入时的值。

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

2

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

如果保存信息非常重要,您可能想知道是什么原因导致您的应用程序崩溃并修复该问题。无论您的应用如何随机崩溃,解决方案的效果如何,您都可能会丢失一些数据。

+0

coredata会自动保存更改吗?或者我应该解救吗? – 2012-08-13 16:59:56

+0

你做'[managedObjectContext save:nil];'保存(管理对象上下文是核心数据对象) – Dustin 2012-08-13 17:00:39

+0

非常感谢。我会去NSUserDefaults两个答案都非常好。我接受tGilani的只是因为我必须选择一个。 – 2012-08-13 17:03:14