我想通过 wifi 在 iOS 设备之间同步 Core Data。我知道如何与 ASyncSockets 建立连接,但我不确定下一步 - 同步核心数据。
我知道用于在 iOS 和 Mac 之间同步的 ZSync 项目,但我想知道是否有人知道是否可以在 iOS 设备之间做同样的事情。
最佳答案
您可以通过多种方式解决这个问题,但我会考虑以下两种方式之一:
获取
NSManagedObject
子类的属性,将它们转换为NSData
,并使用 AsyncSocket 传输它们。然后,当接收应用程序收到所有属性时,它会在自己的数据库中重新创建对象。一次传输您的整个数据库。无需重新创建任何内容。
第一个选项的优点是它只发送它需要的东西。如果您有数千个对象,而您更改了一个对象,那么您只转移了那个对象。另一方面,如果您在一个对象上有多个关系,事情会变得非常复杂,因为您还必须发送相关对象。
第二个选项对您来说最简单,但效率不高。如果您更改一个对象,您将发送整个数据库。如果您的数据库大小为几兆字节,这可能需要一段时间,并且您每次进行更改时都在这样做。
理想情况下,您可以按照 iCloud 的方式进行操作。仅推送/拉取已更改的内容。我不知道 iCloud 如何确定这一点的实现,但我敢打赌这不是一件小事。哪种方法最适合您取决于您的数据库有多大以及修改对象的频率。如果您的数据库相对简单(没有关系或只有很少的关系)并且发生了很多变化,则方法 2 最适用于修改很少的大型复杂数据库,方法 1。
关于iphone - 通过 wifi 在 iOS 设备之间同步核心数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14655064/