【问题标题】:Data Persistance in iPhone ApplicationsiPhone 应用程序中的数据持久性
【发布时间】:2010-01-04 02:06:30
【问题描述】:

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

我创建了三个类,MMDot、MMShowMovement 和 MMShow。 MMShowMovement 在数组中保存了 MMDot 类的实例,因为 MMShow 保存了 MMShowMovement 的实例。听起来是个不错的方法,每个类都有很多与之相关的逻辑,所以我认为类似乎是表示所有这些数据的好方法。

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

我真的很茫然。

【问题讨论】:

  • 我会重新建模以使用 CoreData

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


【解决方案1】:

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

【讨论】:

  • 完全同意这个评价——iPhone 支持键控归档和解压,所以如果你有相对简单的对象并且熟悉架构,那就去吧。另一方面,Core Data 可以对对象关系非常有用——它还提供了许多其他好处(参见stackoverflow.com/questions/1883879/…
  • MMDot 有大约 15 个属性,大多数是 NSIntegers 和 NSStrings,MMShow 和 MMShowMovement 类各有大约三个属性。 MMShowMovement 将保存 40 到 100 个 MMDot 实例,而 MMShow 将保存大约 4 个 MMShowMovement 实例。类之间的唯一关系是 MMDot 具有“计数”属性,并且 MMShowMovement 将保留计数总数的 NSInteger。我想我会尝试使用归档。如果它看起来太慢了。我将转到 Core Data。
【解决方案2】:

如果您有很多对象实例,那么使用 Core Data 可能会更好——它会帮助缓存事物,帮助您查询以获取特定的对象集,等等。如果您要保存少数实例,KeyArchiving 确实会更有用,但也有一些缺点 - 特别是更难追踪未归档对象的内存泄漏。

Core Data 也可以为您分页结果,这样您就不会在不需要时获取大型数组的 entre 内容。

【讨论】:

    【解决方案3】:

    前几天我正在研究序列化我的课程并使用 NSUserDefaults。我只是给对象的所有内部结构一个基于对象的唯一键。对我来说似乎工作得很快。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      相关资源
      最近更新 更多