用于iOS的WebService(Json / XML)同步数据库(sqlite)
我有一个Web服务和sqlite数据库。 在此,Web服务将用于在数据库中存储数据。 现在我希望包含同步function – 每当应用程序启动时,数据库将开始通过Web服务加载其表的数据。
现在,在我更新我的Web服务一段时间后,数据库将相应更新。 我的问题是,此更新必须遵循的最佳做法是什么。 我应该清除整个数据库并再次开始添加所有行(我知道这将花费很多时间)但如果不是这样,那么我的数据库将如何仅添加来自Web服务的特定数据?
谢谢。
我建议你的是:
- 应用程序启动时,首先将所有Web服务内容存储到db中。
- 仅从数据库在屏幕上显示您的内容。
- 再次当您需要刷新或调用数据时,只需更新数据库。
因此,您将始终在数据库中找到所有新鲜数据。
下载和更新整个服务器数据将certificate是昂贵的。 它将使用更多带宽,并certificate您的客户成本高昂。 而不是推送整个负载(即使是次要更新),发送增量。 我建议你保留版本信息。
- 当应用程序从Web服务下载所述版本的数据并将其成功存储在数据库中时,也要在DB中设置当前更新的版本。
- 当应用程序下次启动时,请执行轻量级标头请求以从服务器获取版本信息。 服务器应使用最新的数据版本号响应此标头请求。
- 使用存储在DB中的当前应用程序数据版本检查WS中的版本。 如果服务器具有更新版本,请启动同步。
- 版本更改信息应为delta即
- 对于新版本,服务器应仅发送自设备可用版本以来更改的信息。
- 您的服务器应该能够计算两个版本之间的增量。
- Delta信息通常包含新数据,更新数据,删除数据等部分。
- 基于此,iOS应用程序将对数据库数据进行必要的CRUD(创建,读取,更新和删除)操作。
- iOS应用程序自行更新后,您可以将数据库版本更新为服务器上最新收到的版本。 在那之前,让它保持脏,以便正确处理错误。
希望有所帮助。
我建议你使用RestKit一流的Core Data支持。
通过使用RKEntityMapping
您可以将远程对象从JSON或XML直接映射到数据库中的Core Data实体。
RestKit将自动为您维护数据库,并根据您的Web服务插入和更新条目。 (根据我的经验,我发现删除对象需要一些额外的工作,具体取决于您的Web服务的RESTful程度)。
RestKit肯定有附加的学习曲线,但它非常值得:现在已经部署了几次,绝对是比手动编写自己的SQLite / Web服务同步代码更好的解决方案。
首先,您需要将所有Web服务内容设置到您的SQLITE中。您要显示的内容从SQLITE获取该数据并执行opertaion到该sqlite表中,一旦完成所有这些操作,您需要将更改保存到webservice中。
按照这种方式。