【发布时间】:2019-06-24 08:29:22
【问题描述】:
我的 iOS 应用可以打开 CSV 文件,以便导入其数据。我可以通过UIDocumentPickerViewController 在应用程序内毫无问题地打开文件,选择文件应用程序中显示的文件。但是,当首先在“文件”应用程序中查看文件,然后从那里打开我的应用程序(通过“打开方式”共享表)时,我的应用程序无法在传递给我的应用程序的 URL 中看到该文件。该文件似乎不存在。
我将以下调试代码添加到我的 AppDelegate:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
print("Exists: \(FileManager.default.fileExists(atPath: url.path)) (\(url.path))")
return true
}
当我在这个应用程序中打开文件时,它会产生如下日志行:
存在:假 (
/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/Reading List - Andrew’s iPhone - 2018-10-18 11-19.csv)
当我从其他应用程序(例如 Dropbox 或电子邮件)打开文件时,可以处理该文件,并记录以下内容:
存在:真 (
/private/var/mobile/Containers/Data/Application/F9110F90-7A91-4AB6-A92E-0ED933184EA4/Documents/Inbox/Reading List - Andrew’s iPhone - 2018-01-27 08-03.csv)
注意不同的路径(Documents/Inbox vs Mobile Documents/com~apple~CloudDocs)。这是什么原因造成的?如何在我的应用中支持从文件应用打开文件?
我的应用支持的文档类型如下:
【问题讨论】:
标签: ios swift icloud nsfilemanager