核心数据+ CloudKit集成,大型二进制文件同步崩溃

时间:2019-10-19 14:28:33

标签: core-data cloudkit ios13 nspersistentcloudkitcontainer

具有二进制类型并启用了“允许外部存储”的核心数据模型属性会导致NSPersistentCloudKitContainer同步机制崩溃。

这仅在接收设备上发生,这意味着可以成功上传到CloudKit,但是在NSManagedContext中从CloudKit下载会导致崩溃。

<NSSQLSaveChangesRequestContext: 0x281ec8420> , *** NSAllocateMemoryPages(28317598) failed with userInfo of (null)

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** NSAllocateMemoryPages(30318498) failed

这显然是内存崩溃,但是我不知道如何解决它,这似乎是一个iOS错误。

1 个答案:

答案 0 :(得分:2)

您并不孤单! 这不是您做错的事情,如果禁用“允许外部存储”选项(并从设备中删除该应用程序以避免迁移崩溃),它将可以正常运行。 显然,“允许外部存储”选项有问题,并且文件大小超过几MB。

在我的应用中,我正在同步png图片。那些大于〜28mb(如果我能正确记起大小)的人无法同步到设备并使它崩溃。

我使用反馈助手提交了一个错误报告,这是苹果第一次要求提供更多详细信息。我给他们发送了一个示例应用。

编辑: 伙计们,好消息! Apple将我的错误报告标记为“已确定潜在的修补程序-将来用于操作系统更新”。 我将检查Xcode 12 beta是否已修复并报告。

编辑2:对于iOS 14和Xcode 12,该错误已修复!好极了! ?