用于iOS的WebService(Json / XML)同步数据库(sqlite)

我有一个Web服务和sqlite数据库。 在此,Web服务将用于在数据库中存储数据。 现在我希望包含同步function – 每当应用程序启动时,数据库将开始通过Web服务加载其表的数据。

现在,在我更新我的Web服务一段时间后,数据库将相应更新。 我的问题是,此更新必须遵循的最佳做法是什么。 我应该清除整个数据库并再次开始添加所有行(我知道这将花费很多时间)但如果不是这样,那么我的数据库将如何仅添加来自Web服务的特定数据?

谢谢。

我建议你的是:

  1. 应用程序启动时,首先将所有Web服务内容存储到db中。
  2. 仅从数据库在屏幕上显示您的内容。
  3. 再次当您需要刷新或调用数据时,只需更新数据库。

因此,您将始终在数据库中找到所有新鲜数据。

下载和更新整个服务器数据将certificate是昂贵的。 它将使用更多带宽,并certificate您的客户成本高昂。 而不是推送整个负载(即使是次要更新),发送增量。 我建议你保留版本信息。

  1. 当应用程序从Web服务下载所述版本的数据并将其成功存储在数据库中时,也要在DB中设置当前更新的版本。
  2. 当应用程序下次启动时,请执行轻量级标头请求以从服务器获取版本信息。 服务器应使用最新的数据版本号响应此标头请求。
  3. 使用存储在DB中的当前应用程序数据版本检查WS中的版本。 如果服务器具有更新版本,请启动同步。
  4. 版本更改信息应为delta即
    • 对于新版本,服务器应仅发送自设备可用版本以来更改的信息。
    • 您的服务器应该能够计算两个版本之间的增量。
    • Delta信息通常包含新数据,更新数据,删除数据等部分。
    • 基于此,iOS应用程序将对数据库数据进行必要的CRUD(创建,读取,更新和删除)操作。
  5. iOS应用程序自行更新后,您可以将数据库版本更新为服务器上最新收到的版本。 在那之前,让它保持脏,以便正确处理错误。

希望有所帮助。

我建议你使用RestKit一流的Core Data支持。

通过使用RKEntityMapping您可以将远程对象从JSON或XML直接映射到数据库中的Core Data实体。

RestKit将自动为您维护数据库,并根据您的Web服务插入和更新条目。 (根据我的经验,我发现删除对象需要一些额外的工作,具体取决于您的Web服务的RESTful程度)。

RestKit肯定有附加的学习曲线,但它非常值得:现在已经部署了几次,绝对是比手动编写自己的SQLite / Web服务同步代码更好的解决方案。

首先,您需要将所有Web服务内容设置到您的SQLITE中。您要显示的内容从SQLITE获取该数据并执行opertaion到该sqlite表中,一旦完成所有这些操作,您需要将更改保存到webservice中。

按照这种方式。