我正在尝试使用CloudKit将应用程序中的文件存储到CKAssets中。一切都很好,使用CKRecord + CKAsset上传和下载都很好,除了一些文件类型,包括数字、主题和页面文档。当我试图将这些保存到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来检测这些是“包文件”,并将它们压缩成可以导出的格式?如果我不能在一个设备上上传一个主题文件,并通过我自己的应用程序在另一个设备上访问它(作为基调文档),那将是非常令人失望的。
发布于 2016-05-05 04:06:03
在这里找到了解决方案:https://stackoverflow.com/a/36874037/145552
基本上,使用NSFileCoordinator和NSFileCoordinatorReadingForUploading选项是关键.如果需要的话,这会压缩文件,您可以将newURL从块传递到CKAsset中,这样它就能正常工作。在找到这个解决方案之前,我一直在使用NSFileCoordinatorReadingWithoutChanges。
发布于 2016-05-05 02:52:11
这里没有神奇的解决方案,你必须自己拉链和解压包。
https://stackoverflow.com/questions/37038151
复制相似问题