【发布时间】:2012-03-02 09:28:55
【问题描述】:
我有一个库风格的应用程序,它使用 Core Data 来存储它的数据。目前我正在整合 iCloud 支持。
我研究了几个示例和 Apple 文档,最后设法将在设备 A 上创建的对象自动同步到设备 B。
这很好,但我知道我遇到了一些问题:一些对象已同步而其他对象未同步,我不知道如何调试它。有什么方法可以“查看”哪些数据传输到 iCloud,哪些数据存储在云端,哪些数据是从 iCloud 下载的?
我现在看到的是,我创建了一些 NSManagedObject 并将其存储到 ManagedContext/PersistentStore。看不到有没有传到云端,也看不到云端的当前内容。这使得调试整个过程变得不可能。
那么如何调试 iCloud?
于 2015 年 6 月 2 日编辑 我很久以前问过这个问题,但它仍然得到了一些投票或收藏。因此,我想分享一些我同时得到的信息:
不要使用 iCloud!我无法告诉你因为 iCloud 我有多少头痛和不眠之夜。这是不值得的蜡烛。至少在与 Core Data 一起使用时不会。它只是不能可靠地工作。 iCloud Drive 甚至仍然如此。我的应用程序“支持”了 iCloud 大约两年时间,我尽一切可能让它运行起来。每次它似乎工作时,我都会从用户那里收到新的错误消息。它对许多用户来说工作得很好,但给许多其他用户带来了麻烦甚至崩溃。这太可怕了。帮自己一个忙,并使用任何其他同步服务。
【问题讨论】:
-
您推荐哪种同步服务?我的应用需要同时支持美国和中国,因此 Parse.com 和 Dropbox 不可行……但我不确定自己制作服务器是否有意义。另外,您是使用一些同步框架还是自己编写的?谢谢!
-
我不认为每个项目都有一个最佳解决方案。这完全取决于您的要求。就我而言,Dropbox 是正确的解决方案。
-
谢谢!您是否从头开始编写自己的同步机制?
-
我从使用 CoreData 转而使用 SQLite 解决方案。在任何情况下这可能都不是一个好主意,但在为不同平台开发时,这对我来说是正确的方式。然后将 Dropbox 用作跨不同设备的共享文件夹。每台设备都会检查 Dropbox 中是否有可用的数据库副本。然后下载此副本并与本地数据库同步。结果然后上传回 Dropbox,下一个设备可以在其中找到它。此解决方案实际上适用于任何在线存储,并且不限于 Dropbox。
-
感谢您分享详细信息!是的,我可以看到它只适用于小数据存储,因为每次替换整个数据库时:)
标签: ios debugging core-data icloud