iCloud核心数据不传输图像

Posted

技术标签:

【中文标题】iCloud核心数据不传输图像【英文标题】:iCloud core data not transferring images 【发布时间】:2014-10-14 14:15:12 【问题描述】:

我正在开发一个支持 iCloud 的核心数据应用程序。我的一个托管对象有一个用于存储图像的可转换属性,我在类头文件中将其定义为 UIImage。这种方法在早期的非 iCloud 版本中运行良好,并且似乎适用于我用来创建带有图像的新实体的设备(iPhone 5 w/ios 7)。

但在对等设备(运行 iOS 8 的 iPad)上,即使实体在其他方面完好无损,iCloud 也不会提供图像。在调试器中,有一个 UIImage 的地址作为对象的属性,但没有图像。图片不大:只有 .jpg 文件,最大 50kB。

可能相关,iPad 上的应用程序需要很长时间才能记录“使用本地存储:0”并且我收到警告“文件下载失败,错误:错误域 = NSCocoaErrorDomain 代码 = 512”文件下载定时出。”(在 iPhone 上没有问题。)其他帖子提到了这一点,但除了“这是一个 iCloud 问题”之外,我没有找到明确的答案。总的来说,我的设备之间的 iCloud 共享工作缓慢且不规律,令人沮丧。

对这里发生的事情有什么想法吗?我正在使用我认为是非常标准的 iCloud 核心数据堆栈,所以我不想占用空间来发布它......

【问题讨论】:

我的猜测是 iCloud 只是需要很长时间来上传/下载图像数据。在我看来,它不应该在数据可用之前集成更改,但无论如何它似乎都这样做了。奇怪的。如果应用程序尚未在商店中使用 iCloud 同步,您可以考虑其他选项,例如 Ensembles,它允许您使用 CloudKit,这对于数据传输更可预测。 (披露:我开发合奏) 德鲁,谢谢。我发现问题与 iCloud 无关:我删除了 iCloud,核心数据在应用程序终止时使图像为零。 (是的,当它进入后台时,我正在保存上下文。)我将就此发布一个新问题。 iCloud 核心数据同步仍然让我发疯,所以我将在没有它的情况下发布这个版本。合奏看起来对我的下一次尝试很有吸引力...... 【参考方案1】:

丢失的图像原来是核心数据问题,而不是 iCloud 问题(尽管我仍在与 iCloud 搏斗)。问题是我正在设置我的托管对象的 UIImage 属性,直接引用我的包中的图像,而不是从这些图像生成的新 UIImage 对象。 (Full answer here.) 在 iOS 8 中,图像不会在应用程序终止时保留到核心数据。

【讨论】:

以上是关于iCloud核心数据不传输图像的主要内容,如果未能解决你的问题,请参考以下文章

核心数据 - iCloud 行为

如何阻止核心数据同步到 iCloud

将核心数据与 iCloud 同步 - 不包括实体

合并 iCloud 和核心数据数据库

iCloud - NSCoding 或核心数据

iOS 和 macOS 应用程序之间的 iCloud 核心数据共享不起作用