Core Data + CloudKit 集成,大二进制文件同步崩溃

Ale*_*nov 5 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
Run Code Online (Sandbox Code Playgroud)

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

Nik*_*kis 6

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

在我的应用程序中,我正在同步 png 图像。那些大于~28mb(如果我能正确记得大小的话)的人无法同步到设备并导致设备崩溃。

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

编辑:各位好消息!Apple 将我的错误报告标记为“已识别出潜在的修复 - 用于未来的操作系统更新”。我将检查 Xcode 12 beta 是否已修复并返回报告。

编辑2:对于iOS 14和Xcode 12,该错误已修复!耶!