是否每个应用都允许用户输入使用核心数据构建的数据?
我已经构建了一个“购物清单”类型的表格视图应用程序,您可以在其中命名列表,然后在详细信息视图中将项目添加到列表中。简单。 我没有得到的是,基于iphone开发书,该示例使用词典将数据保存到plist。
我已经知道它可以在模拟器上运行但不能在设备上运行,因为数据被保存到应用程序包而不是文档目录(这对我来说是新的!)
在设备上,该应用程序运行良好,除了它不会保持数据。 核心数据或sqlite是唯一的解决方案吗? 是否每个应用都允许用户输入使用核心数据构建的数据?
答案 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所提供的财富 - 和平!