具有二进制类型并启用了“允许外部存储”的核心数据模型属性会导致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错误。
答案 0 :(得分:2)
您并不孤单! 这不是您做错的事情,如果禁用“允许外部存储”选项(并从设备中删除该应用程序以避免迁移崩溃),它将可以正常运行。 显然,“允许外部存储”选项有问题,并且文件大小超过几MB。
在我的应用中,我正在同步png图片。那些大于〜28mb(如果我能正确记起大小)的人无法同步到设备并使它崩溃。
我使用反馈助手提交了一个错误报告,这是苹果第一次要求提供更多详细信息。我给他们发送了一个示例应用。
编辑: 伙计们,好消息! Apple将我的错误报告标记为“已确定潜在的修补程序-将来用于操作系统更新”。 我将检查Xcode 12 beta是否已修复并报告。
编辑2:对于iOS 14和Xcode 12,该错误已修复!好极了! ?