【问题标题】:Objective-c : How to store a large amount of data (iOS RSS application)Objective-c:如何存储大量数据(iOS RSS 应用)
【发布时间】:2012-01-12 20:52:00
【问题描述】:

我目前正在开发 iOS 上的 Google Reader 应用程序,我想知道存储所有以前下载的数据(可能多达数千条新闻)的最佳方式是什么?我听说过Core Data,是这样吗?还是更容易存储 XML 或 JSON 文件并对其进行解析?

谢谢

【问题讨论】:

  • Core Data 将为您处理内存中的错误对象,更不用说它是 iOS 上的一等公民,因此它有机会被 Apple 微调。 :)
  • 好的,那我来看看它是如何工作的。谢谢

标签: objective-c ios core-data store


【解决方案1】:

Core Data 通常是处理大量数据的好方法,尤其是处理复杂关系的数据。

在这种特殊情况下,您可以站在巨人的肩膀上。 NetNewsWire 是一个 iOS RSS 雷达(使用谷歌阅读器),它使用了一段时间的 Core Data 并放弃了它。 NewNewsWire 当时的作者很友善地在http://inessential.com/2010/02/26/on_switching_away_from_core_data 中写下了原因

我认为这些都不会改变,因此除非您的 RSS 阅读器与 NetNewsWire 有很大不同,否则如果它避免使用 Core Data 并使用 sqlite(直接或通过诸如 FMDB 之类的框架)会更快。我还敢打赌,如果您使用 Core Data 并接受性能打击,您将“更快地进入市场”。

(现在你的 RSS 程序的重点可能非常不同,所以也许你永远不需要为 10,000 个项目或任何其他核心数据阻碍更多的事情做相当于 update newsItems set read = 1 where 的事情——如果所以,一定要跑到Core Data)

注意:自从写下这个答案后,情况发生了一些变化。 iOS 8 添加了一些对绕过其中一些的批量操作符的支持,例如,参见 NSBatchUpdateRequest。我没有直接的经验,你需要放弃 iOS 7 和之前的支持(或者编写两次代码,并且只适用于 iOS 8+ 上的大型数据集)。此外,所有关于使用“新”事物的警告都适用(“没有经过充分测试”,“没有那么多地方可以求助”),当然,它可能非常适合您的问题,而且 Oooo Shiny!

【讨论】:

  • 我很想知道什么样的 iOS RSS 应用程序需要保存超过 10,000 个项目。在我看来,这是一种设计疏忽。 IMO,永远不会期望用户立即需要访问这么多故事......
  • 也许他的文章中添加了一个额外的数量级。或者,也许他有具有这种配置的真实用户。我在 NNW 中有 200 个左右的提要,在桌面上我不会让它过期一年,所以我实际上可能有 10k 个项目。我确实让 iOS 版本更积极地修剪,如果有超过 1000 个项目,就会被抑制。
【解决方案2】:

核心数据还是直接用sqlite。

【讨论】:

    【解决方案3】:

    是的,你是对的。 除非你花时间学习一些 SQLite、XML 或 JSON……使用 Core Data 是迄今为止最好和最容易实现的选择。它由 Apple 为 Apple 应用程序和操作系统创建。在 Core Data 下的 www.developer.apple.com 上有很好的文档和示例代码。 从这里开始: Core Data Programming Guide on developer.apple.com

    【讨论】:

      【解决方案4】:

      使用核心数据。它非常适合您的需要。查看文档,有大量可用的示例代码(您甚至可以在 Xcode 中启动一个新项目并选择核心数据选项,让它为您填充应用程序委托,并为您提供所有必需的核心数据代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-17
        • 2014-02-24
        • 1970-01-01
        • 2015-07-20
        • 1970-01-01
        • 2011-07-14
        • 2013-03-09
        相关资源
        最近更新 更多