我认为这将是已经覆盖了,但我的搜索返回任何相关性。
据我所知,有NSUserDefaults的是,核心数据,对象归档,原始的SQLite,Plist档案,当然,由Web服务器存储。 什么是不清楚的,有点朦胧的初学者是当采用每一种不同的工具。
Web服务器VS核心数据的用途是显而易见的,但对于VS NSUserDefaults的Plist档案? 核心数据VS对象归档? 使用案例的简单故障将真正帮助我理解了为什么有用于存储iOS中这么多的选择。
我认为这将是已经覆盖了,但我的搜索返回任何相关性。
据我所知,有NSUserDefaults的是,核心数据,对象归档,原始的SQLite,Plist档案,当然,由Web服务器存储。 什么是不清楚的,有点朦胧的初学者是当采用每一种不同的工具。
Web服务器VS核心数据的用途是显而易见的,但对于VS NSUserDefaults的Plist档案? 核心数据VS对象归档? 使用案例的简单故障将真正帮助我理解了为什么有用于存储iOS中这么多的选择。
我尝试写的常见使用情况的快速和简单的列表,因为@rmaddy说,这个答案可以写成一本书章节:
NSUserDefaults
:存储提供简单的用户喜好,没有什么太复杂或安全。 如果你的应用程序有几个开关的设置页面,你可以在这里保存数据。
Keychain
(见SSKeychain为一个伟大包装):用来存储敏感数据,如凭证。
PLists
:用来存放更大的结构化数据(但不是很大):这是一个非常灵活的格式,可以在场景中大量使用。 一些例子是:
Object archiving
可序列化更复杂的对象,也许是全二进制数据是有用的,不能(或者你不想)像的Plist简单的结构进行映射。
Core Data
是强大的,可以通过不同的持久存储备份(SQLite是只是其中之一,但你也可以选择XML文件或者你甚至可以编写自己的格式!),并给出了元素之间的关系。 它是复杂的,并为发展提供有益的许多功能,如志愿和背景。 你应该使用它的大数据集的许多相关的记录,这可能是用户生成或由服务器提供的。
Raw SQLite
,当你真的需要,对关系数据源真快访问是有益的(核心数据引入了一些开销),或者如果你需要支持跨多个平台相同的SQLite的格式(你永远不应该惹CoreData内SQLite的:它使用它自己的格式,所以你不能只是“舶来品”,在CoreData现有的SQLite)。 例如,对于一个项目,我工作了,web服务为我提供了一些大的SQLite,而不是jsons或个XML:一些这方面的SQLite是进口到CoreData(可能需要一段时间,这取决于源大小操作),因为我需要所有它的功能,而其他SQLites是一个真正快速访问直接读取。
Webserver storage
以及它应该是显而易见的:如果你需要将数据存储到服务器是因为该设备不应该是数据的唯一所有者。 但如果你只是需要将相同的应用程序在不同的iOS设备同步(或者甚至与应用程序与Mac移植版),你也可以看的iCloud存储,效果显着。