我已经实现了一个iOS应用程序,该应用程序将restkit与coredata一起使用,并将grails后端与SQL一起使用。只要有网络连接并且只要服务器已启动并运行,我就可以使用“获取”和“发布”部分。
我正在使用服务器分配的ID作为核心数据中的主键来同步对象。如果我允许用户在脱机或服务器出现问题时创建或更新对象,那么维护状态并在以后更新服务器的最佳方法是什么?我想知道这方面的最佳做法。
提前致谢!!
最佳答案
我已经以几种方式解决了这个问题,尽管这不是一个简单的任务。
首先,我向所有Core Data模型添加了NSAttribute来跟踪它们的状态(即,是否应通过POST或PUT请求将其发送到服务器)。然后,我监视了可达性通知(RestKit通过RKReachabilityObserver
公开了这些通知),并将已使用适当方法修改的对象发送到服务器。我用于此目的的代码可以在here中找到(但已过时,不应直接使用)。
我设计的第二种方法是创建一个Core Data实体,该实体本质上是一个队列,并且模型中的更改已注册在队列中,并在网络可用时与服务器同步。在撰写本文时,它已经可以在github上进行讨论了,目前还没有经过全面的测试,而是here it is。
关于database - 维护和更新IOS客户端与服务器之间的脱机更改的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321223/