何时在 Db for iPhone 中存储对象的经验法则

Posted

技术标签:

【中文标题】何时在 Db for iPhone 中存储对象的经验法则【英文标题】:Rule of thumb for when to store objects in Db for iPhone 【发布时间】:2011-06-04 09:55:22 【问题描述】:

对于何时应该将对象从内存中切换到将它们存储在 iPhone/iPad 上的 Core Data/Sqlite 等数据库中,是否有一个好的经验法则?

我听说(我认为是在 Big Nerd Ranch 中,书)在 iPhone 3GS 上的 Document 目录中保存和存储 10.000 个简单对象完全没有问题。但是我想当你在对象之间有更复杂的关系时,更容易将它们存储在 Core Data 中。

你的经历是什么,数据库还是不数据库?

【问题讨论】:

【参考方案1】:

看到这个previous answer to a similar question.

简短的总结:

    当数据集相对较小且复杂度较低时,可以使用集合(NSArray、NSDictionary、NSSet)作为plist 写入磁盘。 当数据集非常大但复杂度低时,例如一个图书馆卡片文件,其中所有卡片都完全相同且彼此无关,那么原始 SQL 可能是一个很好的解决方案。 当复杂性很高时,即许多不同类型的对象都相互关联,无论数据大小如何,都使用 Core Data。

但是,一旦您成功爬上了 Core Data 的学习曲线,它就会变得非常容易使用,以至于您一直默认使用它。我现在自动使用它,即使是我曾经使用数组的东西。

如果您打算练习编写 Apple API 应用程序,最好利用您的时间花一两周时间学习 Core Data。它不仅仅是一个持久化 API,它是一个用于创建和使用 Apple API 使用的 Model-View-Controller 设计的整个模型层的 API,

(顺便说一句,我是 Big-Nerd Ranch 的建议,远低于使用机械硬盘的台式机等设备。)

【讨论】:

【参考方案2】:

从easiest 存储方法开始,可能是 plist 或普通文件。当(如果)您确实注意到性能或数据完整性问题时,请切换到更强大的解决方案。

【讨论】:

以上是关于何时在 Db for iPhone 中存储对象的经验法则的主要内容,如果未能解决你的问题,请参考以下文章

存储在向量中的对象,它们何时被销毁?

在 iPhone/iPod Touch 上本地存储包含 333,000 行的 sqlite DB 是不是可行?

自动释放的对象何时真正释放?

您何时在 Objectify for GAE 中注册课程?

何时释放带有“自动释放”的对象?

iPhone本地存储自动清除