Core data 核心数据&x2B;CloudKit集成,大型二进制文件同步崩溃

Core data 核心数据&x2B;CloudKit集成,大型二进制文件同步崩溃,core-data,cloudkit,ios13,nspersistentcloudkitcontainer,Core Data,Cloudkit,Ios13,Nspersistentcloudkitcontainer,类型为binary且启用了“允许外部存储”的核心数据模型属性会导致NSPersistentCloudKitContainer同步机制崩溃 这只发生在接收设备上,这意味着上传到CloudKit是成功的,但在NSManagedContext中从CloudKit下载会导致崩溃 <NSSQLSaveChangesRequestContext: 0x281ec8420> , *** NSAllocateMemoryPages(28317598) failed with userInfo of

类型为binary且启用了“允许外部存储”的核心数据模型属性会导致NSPersistentCloudKitContainer同步机制崩溃

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

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

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** NSAllocateMemoryPages(30318498) failed
,***NSAllocateMemoryPage(28317598)失败,用户信息为(null)
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:***NSAllocateMemoryPages(30318498)失败
这显然是内存崩溃,但我不知道如何解决它,这似乎是一个iOS错误。

你并不孤单! 这并不是你做错了什么,如果你禁用“允许外部存储”选项(并从你的设备上删除该应用以避免迁移崩溃),它将可以正常同步。 显然,“允许外部存储”选项和大于几mb的文件有问题

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

我和反馈助手一起提交了一份bug报告,苹果公司第一次要求提供更多细节。我给他们发送了一个示例应用程序

编辑: 好消息,伙计们! 苹果公司在我的bug报告中标记了“潜在修复已确定-用于将来的操作系统更新”。 我将检查Xcode 12 beta版是否已修复,并报告


编辑2:对于iOS 14和Xcode 12,错误已经修复!耶!我的猜测是,这不是一个错误,你只是超载的系统。读一下这个,可能会有帮助。。。和表示分配新内存块的过程失败。@andrewbuilder我知道崩溃是在内存分配过程中造成的,而我知道它试图专门为二进制属性分配内存(精确大小字节到字节)。我不明白的是它为什么这么做?我对它应该如何工作的期望:1)我创建了一个二进制属性并允许外部存储,即对于大值核心数据存储,一个文件+对文件的引用2)CloudKit存储就像CKAsset 3)在同步过程中,任何时候都不应该将这些数据提升到内存中……我也向苹果公司报告过,但从未得到回复:)在我的情况下,作为一种解决方法,我禁用了“允许外部存储”,令人惊讶的是(!)它工作得很好。我不喜欢臃肿的数据库,但是,嘿,至少它不会崩溃。还遇到了一个26 mb pdf的崩溃。禁用“允许外部存储”修复了它,但我想知道这会对性能造成什么损失。嘿,尼科斯,现在怎么样?苹果在Xcode 12 beta 6中解决了这个问题吗?@francisfeng对于Xcode 12 beta 6来说,不幸的是,这个问题没有得到解决。我还没有在真正的设备上试用过iOS14测试版。我以为它是在iOS14中修复的。但一旦文件达到100MB,我就遇到了同样的问题。只是很沮丧。