我知道这个问题以前已经出现了,但是我的解释对我来说还不清楚,我的问题有点笼统。我正在尝试使用远程Web服务概念化如何在iPhone应用中定期更新数据。从理论上讲,手机上的一部分数据将定期同步(仅在更新时)。虽然其他数据需要在线使用用户,并可以随时要求使用。

从概念上讲,使用XML-RPC或JSON和核心数据似乎可以。我想知道是否有人对实施此功能的最佳方法有意见,我是新手iPhone开发人员,但是我从概念上了解了很多过程。

谢谢

有帮助吗?

解决方案

为了同步一组实体,当您无法控制服务器时,这是一种方法:

  1. 添加一个 touched bool属性属于您的实体描述。

  2. 在同步尝试中,将所有实体实例标记为未触及的(touched = [NSNumber numberWithBool:NO]).

  3. 循环浏览服务器端(JSON)实例,并将或更新实体从核心数据存储中添加到服务器端存储,反之亦然。更新的方向将取决于您的同步策略以及哪些数据在两边都“新鲜”。无论哪种方式,马克都添加,更新或同步核心数据实体(触摸)(touched = [NSNumber numberWithBool:YES])

  4. 根据您的同步策略,从您的核心数据存储中删除所有实体实例,这些实例仍未受到影响。可能从您的服务器端商店中删除了未触及的实体,因为核心数据存储和这些对象的服务器之间没有添加,更新或同步事件。

同步是要实施的相当多的工作,将取决于您需要支持的同步程度。如果您只是拔数据,则步骤3非常简单,因为您不需要将对象更新推向服务器。

其他提示

同步很难,很难。理想情况下,您需要接收服务器更改的三角洲,然后为核心数据中的每个记录使用唯一的ID,仅更新那些新的或更改的记录。

假设您可以做到这一点,那么代码非常简单。如果您在两个方向上同步,那么事情就会变得更加复杂,因为您需要在双方跟踪三角洲并处理碰撞。

您能澄清要完成哪种类型的同步吗?是双向还是拉力?

我有一个答案,但是很烂。我目前正在寻找一种更可接受/可靠的解决方案(即Marcus Zarra烹饪的任何东西)。

我所做的事情需要一些工作...认真,因为它一直无法正常工作...

移动设备具有JSON目录的实体目录,其版本和一个指向带有实体内容的JSON文件的URL。

服务器具有相同的设置,目录列出了实体等。

每当移动设备启动时,它将其本地目录的实体版本与服务器上的目录进行比较。如果服务器上的任何版本都更新,它为用户提供了下载实体更新的机会。

当用户选择更新时,移动设备现在具有针对每个新/更改实体的URL并下载。下载后,该应用将为每个更改的实体吹走所有对象,然后从JSON插入新对象。如果发生错误,则将删除/插入卷回到前更新状态。

这是有效的。当它出现问题时,我无法在调试会话中捕捉它,因此我不确定在过程中会导致腐败或不一致的是什么。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top