【问题标题】:iPhone - different ways to store data, advantages and disadvantagesiPhone - 存储数据的不同方式,优点和缺点
【发布时间】:2011-08-12 16:52:44
【问题描述】:

您能否解释一下在 iPhone 上存储数据的不同方式,以及每种方式的优缺点。

我已经阅读了很多关于 UserDefaults、CoreData、XML、plist 的内容......我有点迷茫。

现在,我明白了:

  • UserDefault 用于首选项,即使可以完成(少量数据)也不用于其他任何事情。它会生成一个 plist 文件,以后可以轻松地人工读取/检查到 XCode 中。

  • XML 适用于结构化文本,但不适用于二进制数据。而且它易于编写,但不易于阅读。它会生成一个 XML 文件,以后可以轻松地在 XCode 中进行人工读取/检查。

  • CoreData 功能强大,可以保存任何大小的任何内容,但包含起来有点困难/太长。并且已经编写的人工读取的核心数据是“困难的”(可能吗?)

【问题讨论】:

  • 也许您可以详细说明您想要存储/访问的数据类型以及您可能想要存储/访问它的方式?另外,考虑详细说明数据量。一个例子会有很长的路要走。
  • CoreData 有点冗长,线程有一些技巧,但并不难。

标签: iphone xml core-data save plist


【解决方案1】:

SQLite DB - 供 iOS 开发使用的 DB,您可以根据自己的喜好直接与之交互(例如,您想使用 SQL 语句)。

CoreData - 对 SQLite DB 的抽象,因此您可以删除 SQL 语句并改用 API。这样做的好处是它与 Cocoa API 的兼容性。在我们的生产应用程序中,我们使用 CoreData 而不是 SQLite。

文件系统 - 您可以直接在此处存储文件并使用约定。您可能还想了解如何使用缓存文件夹 iOS 开发来存储临时数据。

XML - 个案。在商业应用中,我们只使用 XML 作为系统之间的接口。例如。 iPad 到云服务器。

UserDefault - 仅用于参数

【讨论】:

  • 核心数据第一次可能难以实现。但它是如此强大且对开发人员友好,因此学习它总是很好。一旦你使用了核心数据,你将继续使用它..
【解决方案2】:

如果您想在文件系统上管理自己的存储,Plist 文件是另一种选择。 NSArray 和 NSDictionary 提供了在 plist 文件中写入和读取这些集合的方法,只要您可以将所有数据存储在一种受支持的 plist 数据类型中。有关详细信息,请参阅Property List Programming Guide。如果您可以轻松地将数据分解为不同的文件并且总是希望一次加载整个文件,这可能是一个不错的选择。

CoreData 是一个强大的工具,尤其是当您想要存储对象图时。当您希望能够轻松存储和加载模型对象时,这可能是一个合适的选择。

如果您想存储关系数据并针对它运行查询,SQLite 非常棒。如果您想要快速高效的查询,但不需要将结果转换为模型对象(或者有一些理由编写自己的 ORM 层),这可能是一个不错的选择。

正如您提到的,NSUserDefaults 是一种用于存储用户凭据的便捷工具,但不适用于大量数据。它还允许您在设置应用程序中公开设置,以便用户可以在一个公共位置设置应用程序行为,而无需启动您的应用程序。

如果您想通过文件共享设置向用户公开这些文件,任何形式的基于文件的存储都可能具有额外的价值,从而允许应用程序数据在同步到 PC 时出现在 iTunes 文档目录中。


无论您使用哪种存储机制,这些选项中的每一个都要求您为数据管理某种架构。

您需要跟踪应用程序的每个版本中存储数据的格式。每当您改变对保存数据格式的期望时,您都需要支持旧版本。我看到太多应用在更新后崩溃,因为它们不处理旧版本应用保存的数据,或者假设用户会安装并运行应用的每个版本,而不是跳过一些更新。

CoreData 支持将数据从一种模式迁移到另一种模式,但在所有情况下都需要开发人员的工作、意识和测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多