我启用了文档类型以将文件从其他应用程序导入或复制到我的应用程序。我有一些疑问 :
1-应该在哪里创建将文件从收件箱移动到文档目录的方法?这是正确的地方吗?func applicationWillEnterForeground(_ application: UIApplication)
2-在第一个视图控制器上,我从文档目录获取文件:
func getFileListByDate() -> [String]? {
let directory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
if let urlArray = try? FileManager.default.contentsOfDirectory(at: directory,
includingPropertiesForKeys: [.contentModificationDateKey],
options:.skipsHiddenFiles) {
return urlArray.map { url in
(url.lastPathComponent, (try? url.resourceValues(forKeys: [.contentModificationDateKey]))?.contentModificationDate ?? Date.distantPast)
}
.sorted(by: { $0.1 > $1.1 }) // sort descending modification dates
.map { $0.0 } // extract file names
} else {
return nil
}
}
但是当文件导入到我的应用程序时Inbox
我的表视图中的文件夹(项目),如何自动从中移动文件Inbox
to Document
目录并删除收件箱文件夹?
如果您的应用程序需要打开来自另一个应用程序的文件,您需要实现委托方法
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
并将 URL 移至您的应用程序内您选择的文件夹。
let url = url.standardizedFileURL // this will strip out the private from your url
// if you need to know which app is sending the file or decide if you will open in place or not you need to check the options
let openInPlace = options[.openInPlace] as? Bool == true
let sourceApplication = options[.sourceApplication] as? String
let annotation = options[.annotation] as? [String: Any]
// checking the options info
print("openInPlace:", openInPlace)
print("sourceApplication:", sourceApplication ?? "")
print("annotation:", annotation ?? "")
将文件从收件箱移至目标 URL(在您的情况下是附加 url.lastPathComponent 的文档目录):
do {
try FileManager.default.moveItem(at: url, to: destinationURL)
print(url.path)
print("file moved from:", url, "to:", destinationURL)
} catch {
print(error)
return false
}
return true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)