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

Core data 请帮助理解保存数据。核心数据与plist,core-data,plist,Core Data,Plist,每个允许用户输入数据的应用程序都是用核心数据构建的吗? 我已经建立了一个“杂货店列表”类型的表格视图应用程序,你可以在其中命名列表,然后在详细信息视图中将项目添加到列表中。简单。 我不明白的是,基于一本iphone开发书,这个例子使用字典将数据保存到plist 我了解到,它可以在模拟器上工作,但不能在设备上工作,因为数据保存到应用程序包中,而不是文档目录(这对我来说是新的!) 在该设备上,该应用程序运行良好,只是无法保存数据。 核心数据或sqlite是唯一的解决方案吗? 每个允许用户输入数据的应

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

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

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

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

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

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

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

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

有关更多详细信息,请阅读


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

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

您应该能够将数据写入NSDictionary(或NSMutableDictionary),然后使用-writeToFile:atomicaly将数据写入应用程序的文档目录:

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

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


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

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

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

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

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

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


希望这能让未来的游客利用IOS提供的财富——和平

这是否意味着每个接受用户输入的应用程序都会使用这些方法中的一种?我并不奇怪我的问题是错误的。这是我的问题的一部分,我还不知道如何明智地提问这有点尴尬,但我必须从某个地方开始。看来序列化我的数据是一条可行之路。谢谢你的回答!