iOS8:扩展存储提供程序(导入、导出、移动)不起作用
Posted
技术标签:
【中文标题】iOS8:扩展存储提供程序(导入、导出、移动)不起作用【英文标题】:iOS8: Extension storage provider(import, export, move) not work 【发布时间】:2014-07-22 10:24:22 【问题描述】:我正在开发我的存储提供程序并使用 Apple 的“NewBox”(它的链接已过期)示例代码作为主机应用程序。理想情况下,我希望看到我可以将文件从存储提供商导入(复制)到我的 NewBox 的沙箱或导出/移动文件到其他应用程序。
在 NewBox 主机应用程序中,当我想导入文件时,我使用:
UIDocumentMenuViewController *vc = [[UIDocumentMenuViewController alloc] initWithDocumentTypes:@[(NSString *)kUTTypeRTF,(NSString *)kUTTypePNG,(NSString *)kUTTypeText,(NSString *)kUTTypePlainText,(NSString *)kUTTypePDF, (NSString *)kUTTypeImage] inMode:UIDocumentPickerModeImport];
一旦我拿起一个文件,在我的 UIDocumentPickerExtensionViewController 中,我调用:
- (void)pickDocument:(NSURL *)documentURL
[self dismissGrantingAccessToURL:documentURL];
调用dismissGrantingAccessToURL后,picker的view会被dismiss并返回给宿主app,宿主app的didPickDocumentAtURL会被调用。
但是,“didPickDocumentAtURL”接收的是我选择的原始文件的 URL,而不是系统复制到 NewBox 沙箱的新 URL。这对于出口和搬家的情况也很熟悉。 我对导入/导出/移动有误解吗?我以为复制到宿主应用程序沙箱等文件的这种操作是由系统完成的,宿主应用程序将获得要访问的文件的新 URL。
我在ios8 beta4上试过了,这个问题依旧存在。
谢谢!
【问题讨论】:
嘿..这个方法“didPickDocumentAtURL”对你有用吗?..在我从 iCloud 中选择文档后,控制甚至都没有使用这个方法..我在这里错过了什么? 您的意思是宿主应用程序的didPickDocumentAtURL?这可能是一个有时它没有调用的错误。我将手动关闭应用程序并在正确调用它的情况下重试。 【参考方案1】:你从documentPicker:didPickDocumentAtURL:
得到的URL取决于操作:
导入/导出:/data/Containers/Data/Application/$(AppIDOfAppPresentingUIDocumentPickerViewController)/tmp/DocumentPickerIncoming/File.txt
打开/移动:
/data/Containers/Shared/AppGroup/$(ExtensionAppGroupID)/File%20Provider%20Storage/File.txt
其中“File.txt”可以是任何文件名或文件路径。
在导入的情况下,呈现选择器的应用负责将给定 URL 处的文件移动到永久位置。在打开或移动的情况下,应用程序可能应该保存 URL 以供将来使用(始终在文件协调器中使用它)。在导出的情况下,通常会忽略 URL。
NewBox 项目可以从苹果网站https://developer.apple.com/devcenter/download.action?path=/wwdc_2014/wwdc_2014_sample_code/newboxanintroductiontoiclouddocumentenhancementsinios8.0.zip下载
【讨论】:
你能帮忙***.com/questions/30613645/…以上是关于iOS8:扩展存储提供程序(导入、导出、移动)不起作用的主要内容,如果未能解决你的问题,请参考以下文章
导出 Oracle 数据库,将其导入其他用户,存储过程不起作用