【问题标题】:iCloud and Core Data - How to debug?iCloud 和 Core Data - 如何调试?
【发布时间】: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


【解决方案1】:

似乎有一个运行时参数

-com.apple.coredata.ubiquity.logLevel 3

查看这篇文章http://www.freelancemadscience.com/fmslabs_blog/2012/3/28/debug-settings-for-core-data-and-icloud.html

【讨论】:

    【解决方案2】:

    试过mitmproxy 看看发送什么,接收什么?

    http://mitmproxy.org/doc/tutorials/gamecenter.html 有 GameCenter 教程,iClound 传输应该类似。

    【讨论】:

    • 感谢您的提示。这些工具看起来很有前途!这可能有助于查看设备和 iCloud 之间的通信并发现通信问题。但是,如果数据似乎已正确传输到 iCloud,但另一台设备没有收到有关该新数据的任何消息,该怎么办?有什么方法可以查看云中的实际情况吗?我担心答案是否定的,但我不确定。
    • 不知道自己在 iCloud 内部追踪。我也认为答案是否定的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2014-08-31
    • 2012-12-15
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多