gpt4 book ai didi

iphone - 在 iPhone 应用程序中同步数据的最佳策略

转载 作者:行者123 更新时间:2023-12-03 18:40:09 25 4
gpt4 key购买 nike

我正在开发一个常规的 iPhone 应用程序,它从服务器(XML、JSON 等)提取数据,我想知道实现同步数据的最佳方法是什么。标准是速度(更少的网络数据交换)、稳健性(更新失败时的数据恢复)、脱机访问和灵 active (当数据库结构发生轻微变化时可适应,例如新列)。我知道每个应用程序的情况有所不同,但是你们能分享一些你们的策略/经验吗?

对我来说,我正在考虑这样的事情:

1) 在 iPhone 中存储上次修改日期

2) 启动后,发送一条消息,如 getNewData.php?lastModifiedDate=...

3) 服务器将仅处理并发送回上次修改过的数据。

4)此数据的格式如下:

<+><data id="..."></data></+> // add this to SQLite/CoreData

<-><data id="..."></data></-> // remove this

<%><data id="..."><attribute>newValue</attribute></data></%> // new modified value

我不想为每个属性也制作 <+>, <->, <%>...,因为它太复杂了,所以可能当收到 <%> 字段时,我只会删除指定id的数据,然后重新添加(假设这里的id不是一些自动自增字段)。

5)下载并更新所有内容后,我将更新“上次修改日期”字段。

此策略的主要问题是:如果我更新某些内容时网络出现故障 => 上次修改日期尚未更新 => 下次我重新启动应用程序时,我将不得不再次执行相同的操作。更不用说潜在的不一致数据了。如果我使用临时表进行更新并使整个事情原子化,它会起作用,但话又说回来,如果更新时间太长(大量数据更改),用户必须等待很长时间才能获得新数据。我应该为每个数据字段使用 Last-Modified-Date 并逐渐更新数据吗?

最佳答案

我将从使更新例程原子化开始,因为您将有足够的时间来弄清楚如何使客户端-服务器通信正常工作。

之后是考虑将其调整为增量的好时机,但前提是您进行了一些测试以确定是否确实有必要。如果您将更新协议(protocol)调整为尽可能低的带宽,您可能会发现即使是“大”更新的下载速度也足够快。

另一种看待问题的方法是问问自己,当普通用户进行同步时,出现网络问题的频率有多少?您可能不想针对不太可能出现的情况进行调整。

如果您尝试优化(最小化)数据传输,您可能需要考虑使用与 XML 不同的格式,因为 XML 相当冗长。或者至少您可能希望通过使每个元素名称和属性尽可能小来以 XML 可读性换取空间,并消除所有不必要的空格。

关于iphone - 在 iPhone 应用程序中同步数据的最佳策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2984658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com