我的应用程序从远程服务器解析XML并将对象存储在Core Data(SQLite存储)中。因此,用户可以通过从本地存储中读取来在OFFLINE时浏览材料。
用户可以在离线浏览时对对象进行更改,这些对象将存储在Core Data SQLite存储中。另一个用户对远程服务器上的对象进行了一些更改,并将其存储在那里。现在当我检测到互联网连接时,我的应用程序应该将本地存储与远程服务器同步。这意味着远程服务器会在我离线时对我的核心数据(SQLite存储)所做的更改进行更新,而我的本地存储 - 核心数据(SQLite存储)需要更新其他用户对远程服务器所做的更改。
例如,有一个论坛,它存储在我的本地存储中,以便我在旅行时可以阅读和回复。以后可以访问互联网。我的应用程序应该自动将我在核心数据中存储的所有回复放到远程服务器上,并将远程服务器上的其他帖子带到我的本地存储中。
远程服务器正在发送我正在解析并存储在Coredata中的XML。 我的问题是如何同步它? 当有变化时,两种沟通方式如何发生? 如何仅同步已更改的数据而不是IMPORT整个远程服务器数据库,反之亦然?
答案 0 :(得分:2)
我知道其中一种做法..
我不确定是否有更好的方法......但这肯定有效......
答案 1 :(得分:0)
一种解决方案可能是
因此,让服务器成为主服务器,应该知道如何合并内容,客户端应该只在一些更改后逐步下载数据。
答案 2 :(得分:0)
交易。您希望遵循交易的ACID规则。基本上,您必须确保在更改本地写入更新之前未更新本地未刷新的数据。
因此,最简单的方法是让用户从服务器获取最新更新,然后覆盖该更新,并确保在该过程中没有更新时间戳。更好的是,使用线程阻塞来确保没有其他事情发生。
如果您使用Google交易或ACID,那么会有很多信息。它是RDBMS环境中的一个重要领域,许多用户可能会破坏数据,并且必须在写入和更新之间保持锁定。