2

我正在尝试使用 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 文档),那将是非常令人失望的。

4

2 回答 2

0

这里没有神奇的解决方案,您必须自己压缩和解压缩包。

于 2016-05-05T02:52:11.343 回答
0

在这里找到解决方案:https ://stackoverflow.com/a/36874037/145552

基本上,使用NSFileCoordinatorwithNSFileCoordinatorReadingForUploading选项是关键......如果需要,这会压缩文件,您可以将newURL块中的 传递到 CKAsset 并且它可以正常工作。NSFileCoordinatorReadingWithoutChanges在我找到这个解决方案之前我正在使用。

于 2016-05-05T04:06:03.530 回答