我想通过wifi在iOS设备之间同步核心数据。我知道如何与ASyncSockets建立连接,但我不确定下一步-同步核心数据。
我知道在iOS和Mac之间进行同步的ZSync项目,但我想知道是否有人知道是否可以在iOS设备之间做同样的事情。
发布于 2013-02-02 15:42:46
你可以用几种方法解决这个问题,但我会考虑这两种方法中的一种:
NSManagedObject子类的属性,将其转换为NSData,并使用AsyncSocket来传输它们。然后,当接收应用程序收到所有属性时,它会在自己的database.第一种选择的优点是它只发送它需要发送的内容。如果您有数千个对象,而您更改了一个对象,则只需传输该一个对象。另一方面,如果你在一个对象上有多个关系,事情可能会变得非常复杂,因为你将不得不发送相关的对象。
第二种选择对你来说是最简单的,但效率不是很高。如果您更改了一个对象,您将发送整个数据库。如果您的数据库有几兆字节大小,这可能需要一段时间,而且您每次进行更改时都会这样做。
理想情况下,您可以按照iCloud的方式进行操作。仅推送/拉出已更改的内容。我不知道iCloud如何确定这一点的实现,但我打赌这不是微不足道的事情。无论哪种方法最适合您,都取决于您的数据库有多大以及对象被修改的频率。方法2最适合修改很少的大型复杂数据库,如果您的数据库相对简单(没有关系或关系很少)并经历大量更改,则方法1最适合。
发布于 2013-02-02 21:30:45
如果你可以浏览网页,我肯定会选择iCloud,它能以一种高效的方式为你处理这个问题。如果你的应用程序应该只能在wifi上工作,也许你可以重新实现iCloud的相同行为。文档中描述了它的工作方式
在iOS 5中,核心数据包括增强功能,以支持SQLite存储与iCloud的高效集成。主要的新特性是,您提交到持久存储的每个更改都记录在存储在iCloud中的离散事务日志文件中,而不是直接将持久存储文件保存在云中。这意味着通过iCloud传播更改是有效的(另一种方法是为每个更改推送整个SQLite文件)。
https://stackoverflow.com/questions/14655064
复制相似问题