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

时间:2011-06-17 19:07:40

标签: iphone objective-c

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

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

如何在Web服务关闭时存储用户答案。 Sqllite是一个很好的选择吗?

请建议。

谢谢,

4 个答案:

答案 0 :(得分:4)

Sqlite是一个很好的选择吗?

是的,SQLite绝对是一个不错的选择。另一种选择是核心数据。

Use CoreData or SQLite on iPhone?

答案 1 :(得分:4)

这取决于数据模型的复杂程度。我最近研究了类似的东西,这是我学到的东西。 iPhone中最流行的数据存储方法是:

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

如果你可以逃脱一个plist那样做。如果您看到必须编写的代码量太多,请切换到Core Data。只有你是专家并且绝对need the performance使用SQLite(当然,除非你已经知道SQLite而不是核心数据)。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

您有几种选择:

  1. SQLite的
  2. 核心数据
  3. 客户端存储
  4. 如果您希望使用基于网络的路线,我会快速查看Safari Client-Side Storage and Offline Applications Programming Guide

    基本上,您将数据库的本地副本存储在内存中,因此如果Web服务已关闭,用户仍可以使用该应用程序。