2011-12-05 46 views
1

我目前正在研究iOS上的Google Reader应用程序,我想知道存储所有以前下载的数据的最佳方式是什么(可能会达到数千条新闻)?我听说过Core Data,是这样吗?或者更容易存储XML或JSON文件并解析它?Objective-c:如何存储大量数据(iOS RSS应用程序)

谢谢

+0

核心数据将为您处理内存中的错误对象,更不用说它是iOS上的头等公民,因此它有机会由Apple进行微调。 :) –

+0

好的,我会发现它是如何工作的。谢谢 –

回答

3

核心数据或直接使用SQLite

1

使用核心数据。这对你所需要的是完美的。查阅文档,可以找到大量示例代码(甚至可以在Xcode中启动一个新项目,并选择核心数据选项,让它为您提供所有必需的核心数据代码。)

1

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

2

核心数据通常是处理大量数据(尤其是复杂关系)的好方法。

但是,在这种特殊情况下,您可以站在巨人的肩膀上。 NetNewsWire是一款iOS RSS雷达(使用谷歌阅读器),它使用了核心数据一段时间,并远离它。当时NewNewsWire的作者非常友好地写下了为什么http://inessential.com/2010/02/26/on_switching_away_from_core_data

我不认为这会有任何改变,所以除非你的RSS阅读器与NetNewsWire有很大的不同,否则它会更快,如果它避免了Core Data和使用sqlite(直接或通过像FMDB这样的框架)。我也会打赌,如果你使用核心数据并且获得性能提升,你将会“更快地进入市场”。

(现在您的RSS程序的重点可能会非常不同,因此您可能永远不需要为10,000个项目或其他任何核心数据妨碍更多帮助的事情执行相当于update newsItems set read = 1 where的操作 - 如果是这样,通过一切手段运行到核心数据)

注:事情已经改变了一点,因为这个答案写了。 iOS 8增加了对批量操作员的一些支持,这些批量操作可以绕过这些操作,例如参见NSBatchUpdateRequest。我没有直接的经验,你需要放弃iOS 7和之前的支持(或者编写两次代码,并且只适用于iOS 8+上的大型数据集)。此外,所有关于使用“新”事物的警告都适用(“没有经过很好的测试”,“没有多少地方可以寻求帮助”),当然可以通过它抵消你的问题,并且Oooo Shiny!

+0

我很想知道什么样的iOS RSS应用程序需要坚持10,000项以上的项目。在我看来,这是一个设计过度的视角。国际海事组织,用户永远不会被期望需要立即访问这么多的故事... –

+0

也许有一个额外的数量级抛入他的文章。或者也许他有那种配置的真实用户。我在NNW中有200个左右的Feed,桌面上我不会让它过期一年,所以实际上我可能有10K个项目。我确实让iOS版本更加积极地修剪,如果有1000个以上的项目,就会被压制。 – Stripes

相关问题