我正在尝试使用CKAssets将我的应用程序中的文件存储到CloudKit中。一切正常,使用CKRecord + CKAsset上传和下载工作正常,除了一些文件类型,包括Numbers,Keynote和Pages文档。当我尝试将这些保存到CloudKit时,我收到以下错误:
CKOperationBase error = <CKError 0x12ddeece0: "Partial Failure" (2/1011); "Failed to modify some records"; partial errors: {
FileAttachments.169DBAC2-8A14-43F0-9F5A-F851E7FF623B:(CJCloudKitPrivateZoneName:__defaultOwner__) = <CKError 0x12f05dcc0: "Invalid Arguments" (12/1017); "Not a regular file">
我的猜测是,这与“包文件”文件有关...即,隐藏在其下方的子目录,您可以在使用“显示包联系人”时看到。
在这种情况下,我应该如何将文件上传到CloudKit?是否有任何API可以检测到这些是“包文件”,还能将它们压缩成可以导出的格式吗?如果我不能在一台设备上上传Keynote文档并通过我自己的应用程序在另一台设备上访问(作为Keynote文档),那将是非常令人失望的。
答案 0 :(得分:0)
这里没有神奇的解决方案,你必须自己拉链并解压缩包。
答案 1 :(得分:0)
在此处找到解决方案:https://stackoverflow.com/a/36874037/145552
基本上,使用带有NSFileCoordinator
选项的NSFileCoordinatorReadingForUploading
是关键......如果需要,可以将文件压缩,并且可以将块中的newURL
传递给CKAsset并且它可以正常工作正确。在找到此解决方案之前,我正在使用NSFileCoordinatorReadingWithoutChanges
。