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

Posted

技术标签:

【中文标题】请帮助理解保存数据。核心数据与 plist【英文标题】:Help understanding saving data please. Core data vs plist 【发布时间】:2010-11-02 18:06:38 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

CoreData 框架独立于对象持久层,可以使用不同的序列化实现,包括 SQLite 和 XML (plist)。

更多详情,请阅读Core Data Programming - Persistent Store Features。

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

【讨论】:

我的问题不正确并不奇怪。那是我的问题的一部分,我还不够聪明地问! :) 这有点尴尬,但我必须从某个地方开始。看来序列化我的数据是要走的路。谢谢你的回答!【参考方案2】:

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

【讨论】:

这是否意味着每个接受用户输入的应用都使用这些方法之一?【参考方案3】:

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

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

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

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

最终,使用 Core Data 可能是更好的方法。它提供了更大的灵活性和更强大的功能 - 但与以往一样,这些优势是有代价的。

【讨论】:

【参考方案4】:

您的问题对于社区来说非常重要 您在问一个战略问题:我在什么时候使用哪种技术?

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

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

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

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

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

【讨论】:

以上是关于请帮助理解保存数据。核心数据与 plist的主要内容,如果未能解决你的问题,请参考以下文章

核心数据 - 将实体保存为 pList / 字典

无法将数据保存到 Plist 中?

如何显示已经保存在核心数据中的数据?

核心数据检查是不是已经保存,Swift

无法识别的选择器 - 保存到核心数据

核心数据、字典还是 plist?