Swift Core 数据与 Web 服务器同步

Posted

技术标签:

【中文标题】Swift Core 数据与 Web 服务器同步【英文标题】:Swift Core Data Sync With Web Server 【发布时间】:2015-09-16 14:40:19 【问题描述】:

我正在制作一个需要在离线和在线模式下运行的应用程序(在 Swift 中)。当它处于离线模式时,数据将本地存储在 CoreData 上。一旦检测到网络(在线),它应该与服务器同步并更新后端数据库。应该怎么做。是否有库或 pod?

我见过this post,但没有什么可操作的。它太高了,我不知道从哪里开始。我从Ray Wenderlich 看到了这个链接,但不知道如何翻译成 Swift。

任何教程链接也会有所帮助

【问题讨论】:

【参考方案1】:

    将新的BOOL attribute 添加到您的CoreData Entity 并将其命名为synched。这将基本上存储每个对象的同步状态。

    现在您必须检查互联网连接。 Refer to this link

    只要您有互联网连接,只需在您的获取请求中使用以下NSPredicateCoreData 获取对象:

    let isSynchedPredicate = NSPredicate(format: "synched = %@", false)
    

    现在您可以使用您的网络服务将所有获取的对象同步并更新到服务器。成功上传后,不要忘记将synched 属性更改为true

【讨论】:

如何确保每次应用程序不会将所有内容上传到服务器..理想情况下,它应该只上传/下载与服务器不同步的数据.. 此方法将确保synched = false的对象,只有那些被更新到服务器。如果不存在这样的对象,则无需点击 update-webservice。再次强调,上传一组对象后,您应该将所有这些对象的synched 属性设置为false 你有没有一个包含这个的示例 Xcode 项目..如果你能分享会很棒...... @AnujArora:对不起,伙计,我没有任何项目可以方便地展示这个实现,而且它的任务太大,无法为此制作示例项目。您可以尝试编写代码,如果遇到任何问题,您可以向我提出新问题。乐于助人。 很公平......快速的问题......你如何在后台一直检查互联网可用性。我已经看到您发布的链接..但是可以说我正在查看..互联网已打开,关闭并再次打开..将在哪里进行检查..在 view_did_load 中..?我猜测互联网是否会不断打开/关闭..所有对象的“同步”值都必须更改

以上是关于Swift Core 数据与 Web 服务器同步的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 Core Data - 如何同步保存上下文?

合并具有相同属性但 ID 不同的 NSManagedObject,与 iCloud 同步会导致重复(Core Data,Swift 1.2)

Core Data 与 Ensembles 的 iCloud 同步

使用带有 Core Data 的脏标志与服务器同步

IOS - 如何在 Core Data Swift 中将数据插入到具有关系的不同表中

异步微服务架构中的同步通信