请帮助理解保存数据。核心数据与plist

时间:2010-11-02 18:06:38

标签: core-data plist

是否每个应用都允许用户输入使用核心数据构建的数据?

我已经构建了一个“购物清单”类型的表格视图应用程序,您可以在其中命名列表,然后在详细信息视图中将项目添加到列表中。简单。 我没有得到的是,基于iphone开发书,该示例使用词典将数据保存到plist。

我已经知道它可以在模拟器上运行但不能在设备上运行,因为数据被保存到应用程序包而不是文档目录(这对我来说是新的!)

在设备上,该应用程序运行良好,除了它不会保持数据。 核心数据或sqlite是唯一的解决方案吗? 是否每个应用都允许用户输入使用核心数据构建的数据?

4 个答案:

答案 0 :(得分:3)

请注意,您提出的问题不正确,因为它假设CoreData与SQLite绑定并且是替代plist。

CoreData是对象生命周期和图形管理的框架。它提供了常见任务的实现,如更改跟踪和传播,一致性实施,数据验证等。

CoreData框架与对象持久层分开,可以使用不同的序列化实现,包括SQLite和XML(plists)。

有关详细信息,请阅读Core Data Programming - Persistent Store Features

是否应该使用CoreData的决定应该基于您是否需要它提供的任何功能。如果需要序列化简单对象图,没有一致性要求,则可以使用标准NSDictionary在任何应用程序可写文件夹中的简单plist文件中序列化数据。否则,请使用CoreData,并根据要存储的数据类型选择适当的持久存储。

答案 1 :(得分:0)

从我在互联网上看到的,您可以使用Core Data(它为您提供SQLite,原子和XML的选项),您可以使用NSKeyedArchivers和NSKeyedUnarchivers(http://www.vimeo.com/1454094)或者您可以存储本地应用程序文件夹中的数据(可能使用序列化方法)。看起来Core数据是最好的解决方案,但实现起来却更复杂。对于一个简单的应用程序,就像你的那样,我认为序列化数据并将其存储在本地app目录中将是完美的。

答案 2 :(得分:0)

我很惊讶您的图书显示了将用户数据写入应用程序包的示例。实际上,我甚至有点惊讶,甚至可能。

您应该能够将数据写入NSDictionary(或NSMutableDictionary),然后使用-writeToFile:atomically:

将其写入应用程序的Documents目录。

使用-initWithContentsOfFile来读回数据也应该很简单:。

对于刚入门的人,我建议保持简单。使用NSDictionary非常简单,但您必须管理列表列表以及如何命名存储在Documents目录中的列表等内容。

最终,使用核心数据可能是一种更好的方法。它提供了更大的灵活性和更强大的功能 - 但是,与以往一样,这些优势需要付出代价。

答案 3 :(得分:0)

您的问题对社区来说非常重要 你问的是一个战略问题:我使用哪种技术?

核心数据最适合基于列表的应用的日常工作。构建核心数据以镜像数据存储,类似于数据库的工作方式。 Core Data最好地支持关系结构,排序,键索引和其他基于行的属性。

属性列表(* .plist)最适合对关键环境设置进行一次性更新。例如,用户可以选择通过IOS设置应用程序设置.plist属性。因此,可以很好地设置密码,帐户设置,电子邮件地址和配置选项。这种数据与频繁更新的事务数据非常不同。

XML Persistence 与.plist密切相关,因为属性列表(或.plist)本身就是一个xml文件。因此,您可以下载xml数据流,然后使用与调整属性列表相同的编程规则在应用程序中使用它。因此,从Web接收xml数据或上传这样的列表,很好地映射到xml持久性。

AWS还提出了AWS-Persistence库,以支持将核心数据集与其在线数据库同步。这可以提供以下帮助:1)让用户通过核心数据在本地填充数据,然后懒惰/机会性地上载列表。为了您的目的(杂货店购物清单),这可以为用户提供即时性,同时为您的服务器提供有趣的大数据机会(分析用户交易,提供推荐,销售广告等)。

希望这能让未来的访问者充分利用IOS所提供的财富 - 和平!