我有一个核心数据应用程序,最终将成为iPhone / iPad通用应用程序。
我想实施云同步,以便运行应用程序的iPhone和iPad可以共享数据。我打算使用recently released Dropbox API。有没有人对最佳方法有什么想法呢? Dropbox API允许应用程序在云上存储文件。我想的是原始存储云上应用程序的数据库(sqlite),然后下载该数据库,但我意识到使用该方法会使合并更改(而不是替换整个数据库)变得非常困难。
任何想法都表示赞赏。感谢。
答案 0 :(得分:5)
如果你可以逃脱它,最简单的同步方法(到目前为止)就是在本地拥有三个数据副本:你上次上传的副本(“旧”),本地更改(“我的”)生成的副本和从服务器下载的 副本(“他们的”)。
然后,对所有三个文件中的所有记录进行排序,并逐个遍历:
请注意,“我的”或“他们的”或“旧的”可能不存在。上述规则仍适用于该情况;如果您选择的结果是“不存在”,那么您将要删除输出文件中的记录。
最后,将生成的文件上传回服务器,以便它成为下一个人的“他们的”数据库。然后将新文件复制到本地“旧”和“我的”数据库。
(有比以上更节省空间的算法...但是没有更简单的算法:)现在磁盘空间相当便宜,特别是如果你压缩文件。)
答案 1 :(得分:1)
您可能希望使用其他方法进行同步。您将要处理的数据类型是什么?
我使用轻量级导轨后端取得了很大成功。
答案 2 :(得分:0)
您可以查看GameKit来共享数据。否则,您似乎只需要管理与中间文件服务器的同步。
答案 3 :(得分:0)
您可能希望将数据导出为本机sqlite格式以外的某种格式。如果我正在设计这样的东西,我认为JSON可能是我选择的格式。
我没有看过Dropbox API,但它们支持上传和下载文件差异,而不是整个文件,对吧?根据API的工作方式,可能让您的应用程序理解其“差异”格式,并使用它可能更容易......