移动或导出模式下的DocumentPickerViewController因不存在的URL而被解雇(使文档提供者应用程序扩展)

时间:2014-08-29 21:22:29

标签: ios url swift ios-app-extension uidocument

我目前正在尝试实施移动和导出模式的功能。我所做的只是让用户导航到他们想要移动/导出文件的目录,然后在他们选择的目录上调用dismissGrantingAccessToURL,并附加原始文件的文件名。以下是代码中的外观:

let moveDestinationPath = self.currentDirectory.path.stringByAppendingPathComponent(AppHelper.Stored.originalURL!.lastPathComponent)
delegate.finishWithURL(NSURL.fileURLWithPath(moveDestinationPath))

我认为这应该足够了,因为文档说明如下:

  

导出文档选择器模式。提供所选目标的URL。此URL只能由Document Picker View Controller扩展程序访问。 系统会在此URL处保存文档的副本,并将URL返回到主机应用程序以指示成功。主机应用程序无法通过此URL访问文档。

     

移动文档选择器模式。提供所选目标的URL。 URL需要包含在documentStorageURL属性引用的层次结构中。 系统将文档移动到此URL并将URL返回到主机应用程序。主机应用程序随后可以通过新URL访问该文档。

但是,当我运行此代码时,我收到以下错误:

Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: '<TestDocumentProvider.DocumentPickerViewController: 0x7c470770> was 
dismissed with a nonexistent URL (file:///Users/test/Library/Developer/CoreSimulator
/Devices/6867B1A7-8694-4D6D-8480-69FE89F39C27/data/Containers/Shared/AppGroup/74A2FBED-
70C5-4F24-8345-AD35FEB86D01/FileProviderStorage/Directory1/apple1.png) 
in Move or Export mode'

鉴于此错误,他们似乎希望我手动移动或复制原始网址上的文件。但这与文档所说的内容(系统中的相关部分)相矛盾。

那么,在这种情况下,有谁知道Apple打算让我做什么?现在我可能只是走自己移动/复制的路线......

1 个答案:

答案 0 :(得分:2)

我认为你误解了出口模式。 目标是,有人选择您的扩展程序可以访问的文件。您下载/提供它并将FileURL呈现给请求的应用程序。

您真正想要做的是导入模式。