在 iPhone 上存储数据的最佳方式

Posted

技术标签:

【中文标题】在 iPhone 上存储数据的最佳方式【英文标题】:Best way to store data on iphone 【发布时间】:2011-06-17 19:07:39 【问题描述】:

我正在为 iPhone 创建一个问答应用程序,允许用户回答显示的问题。

目前我正在调用一个网络服务来存储用户的答案。但我有点担心如果 Web 服务出现故障怎么办。我需要在本地存储用户的答案,然后在 Web 服务启动并运行时调用它。

当网络服务关闭时,我如何存储用户的答案。 Sqllite 是一个不错的选择吗?

请提出建议。

谢谢,

【问题讨论】:

【参考方案1】:

Sqllite 是一个不错的选择吗?

是的,SQLite 绝对是一个不错的选择。另一个选择是 Core Data。

Use CoreData or SQLite on iPhone?

【讨论】:

当然你也可以将Core Data框架与sqllite一起使用。【参考方案2】:

这取决于您的数据模型的复杂性。我最近研究了这样的事情,这就是我学到的。 iPhone 中最流行的数据存储方式有:

列表 适用于少量(数百 K)的分层数据。 如果关系或查询很复杂(因为您必须编写代码),那就不好了。 非常easy to learn。 支持数组、字典、字符串、数据、日期、整数、实数、布尔元素。 您可以将其存储为可编辑和可移植的 XML,也可以存储为速度更快的二进制文件。 核心数据 它是一个具有搜索和持久功能的对象图管理器。 你需要一个好的few hours of learning。 set it up 后即可轻松使用。 比 plist 更好,因为它允许您管理对象图、扩展对象模型、编写查询、撤消/重做、迁移到修改后的数据模型、内存管理和处理并发访问。 比 SQLite 更好,因为: 性能相近,开发速度更快。 创建对象更快。 当对象在内存中时,执行查询不需要在后端(通常是内存或 SQLite)中进行搜索。 SQLite 一个数据库。 在操作不需要您将对象带入内存时优于 Core Data。示例:更新、删除和选择 1(查看是否存在)。 compile the extension可以全文搜索。 最难学习。如果使用包装器会更容易:FMDB、egodatabase。

如果您可以摆脱 plist,那就这样做。如果您发现必须编写的代码量太大,那么请切换到 Core Data。仅当您是专家并且绝对 need the performance 使用 SQLite 时(当然,除非您已经知道 SQLite 而不是 Core Data)。

【讨论】:

【参考方案3】:

应该是的,是的。我会建立一个基于核心数据的应用程序,其中包含问题和答案的实体,并在它们之间建立关系。然后只需使用 NSFetchedResultsController 或任何你想收集和显示数据的东西

【讨论】:

【参考方案4】:

您有多种选择:

    Sqlite 核心数据 客户端存储

如果你想走基于网络的路线,我会快速查看Safari Client-Side Storage and Offline Applications Programming Guide。

基本上,您将数据库的本地副本存储在内存中,这样万一网络服务关闭,用户仍然可以使用该应用程序。

【讨论】:

以上是关于在 iPhone 上存储数据的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

在 iPhone 应用程序上存储网站列表的最佳方式

如何根据数据量将数据存储在 iPhone/iPad 上?

iPhone:存储和检索连接到 UIControl 的 NSManagedObject 的最佳方式

SwiftUI / iOS / iPhone如何在存储之前加密数据/图像以及在哪里/如何在本地存储,一般最佳实践?

在设备上存储和更新数据的最佳方式

iphone数据存储之-- Core Data的使用