iphone - 通过 wifi 在 iOS 设备之间同步核心数据?

标签 iphone ios objective-c core-data asyncsocket

我想通过 wifi 在 iOS 设备之间同步 Core Data。我知道如何与 ASyncSockets 建立连接,但我不确定下一步 - 同步核心数据。

我知道用于在 iOS 和 Mac 之间同步的 ZSync 项目,但我想知道是否有人知道是否可以在 iOS 设备之间做同样的事情。

最佳答案

您可以通过多种方式解决这个问题,但我会考虑以下两种方式之一:

  1. 获取 NSManagedObject 子类的属性,将它们转换为 NSData,并使用 AsyncSocket 传输它们。然后,当接收应用程序收到所有属性时,它会在自己的数据库中重新创建对象。

  2. 一次传输您的整个数据库。无需重新创建任何内容。

第一个选项的优点是它只发送它需要的东西。如果您有数千个对象,而您更改了一个对象,那么您只转移了那个对象。另一方面,如果您在一个对象上有多个关系,事情会变得非常复杂,因为您还必须发送相关对象。

第二个选项对您来说最简单,但效率不高。如果您更改一个对象,您将发送整个数据库。如果您的数据库大小为几兆字节,这可能需要一段时间,并且您每次进行更改时都在这样做。

理想情况下,您可以按照 iCloud 的方式进行操作。仅推送/拉取已更改的内容。我不知道 iCloud 如何确定这一点的实现,但我敢打赌这不是一件小事。哪种方法最适合您取决于您​​的数据库有多大以及修改对象的频率。如果您的数据库相对简单(没有关系或只有很少的关系)并且发生了很多变化,则方法 2 最适用于修改很少的大型复杂数据库,方法 1。

关于iphone - 通过 wifi 在 iOS 设备之间同步核心数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14655064/

相关文章:

ios - 从字典创建 Swift 对象

objective-c - "message was received but not handled"KVO

ios - "Your binary is not optimized for iPhone 5"(ITMS-90096) 提交时

iphone - SimpleTabBarController 泄漏内存

iphone - "transform"和 "affine transform"之间的区别在哪里?

ios - 在 Varnish 中检测设备并且没有缓存

iphone - 未转义控制字符导致 JSON 解析器间歇性失败

objective-c - 是否可以从iOS应用程序在Google Chrome和Opera中打开链接(如iOS中的 Safari )

ios - 在 testflight 上从旧版本更新到新版本时应用程序崩溃

ios - 尝试更改导航栏背景颜色但失败