iPhone应用程序中的数据持久性

时间:2010-01-04 02:06:31

标签: iphone objective-c cocoa-touch core-data data-persistence

在开发我的第一个严肃的iPhone应用程序时(意思是我想在AppStore上实现它),我需要一个很好的方式来表示我的数据。我(愚蠢地,我认为)决定使用类来表示我的数据,而不是使用核心数据。

我创建了三个类,MMDot,MMShowMovement和MMShow。 MMShowMovement将MMDot类的实例保存在数组中,因为MMShow保存了MMShowMovement的实例。听起来像是一个很好的方法,每个类都有很多逻辑,所以我觉得这些类似乎是表示所有这些数据的好方法。

我的问题是,是否有一种简单的方法可以保存这些类的实例,以便在重新打开应用程序后恢复数据?我使用NSKeyedArchiver在OS X上创建了应用程序,它在iPhone上是否类似?是否更容易再次使用Core Data(这些对象非常复杂,特别是MMDot有大约15个实例变量,现在我看它,可能不是那么复杂)?

我真的很茫然。

3 个答案:

答案 0 :(得分:2)

您绝对可以使用NSKeyedArchiver来保存您的对象。我是这两种方法的粉丝,决定主要取决于你的应用需求。我不认为在CoreData中重新建模对象会有太大的作用。在不了解您的应用程序的情况下,我会说如果您使用简单的模型进行简单的持久化,您可能不需要Core Data,如果您有复杂的关系并且在应用程序会话期间经常读取/持久化数据Core Data可能就是这种方式去吧。

答案 1 :(得分:0)

如果您有很多对象实例,那么最好使用Core Data - 它可以帮助缓存内容,帮助您查询以获取特定的对象集,等等。如果要保存少量实例,KeyArchiving确实更有用,但有一些缺点 - 特别是它很难跟踪Unarchived对象的内存泄漏。

核心数据也可以为您进行结果分页,这样如果您不需要,您就不会获取大型数组的entre内容。

答案 2 :(得分:0)

前几天我正在考虑序列化我的课程并使用NSUserDefaults。我只是给对象的所有内部提供了一个基于对象的唯一键。似乎对我来说很快。

在这里写了一篇关于它的博客:http://technolojiadev.blogspot.com/2009/12/serialize-this.html