我想保存将文件下载到模型对象的路径。基于此StackOverflow answer,我应该"仅存储文件名,然后将其与文档目录的位置结合起来"。在我的情况下,它是应用程序支持目录。我不知道该怎么做。
文件下载的完整路径是:/Library/ApplicationSupport/com.Company.DemoApp/MainFolder/myFile.jpg
/Library/Application Support/
是我无法在任何地方保存的部分,我必须在运行时从FileManager中获取它。
com.Company.DemoApp/MainFolder/myFile.jpg
是我可以存储在数据库/配置文件中的文件路径的一部分。
但是我不知道如何从com.Company.DemoApp/MainFolder/myFile.jpg
获取此路径:Alamofire
。例如,下面是下载文件的代码,我该如何获取此路径?
func destination(named name: String, pathExtension: String) -> DownloadRequest.DownloadFileDestination {
let destination: DownloadRequest.DownloadFileDestination = { _, _ in
let appSupportDirURL = FileManager.createOrFindApplicationSupportDirectory()
let fileURL = appSupportDirURL?.appendingPathComponent("com.Company.DemoApp/MainFolder/\(name).\(pathExtension)")
return (fileURL!, [.removePreviousFile, .createIntermediateDirectories])
}
return destination
}
let finalDestination = destination(named: image.title, pathExtension: image.preview.pathExtension)
Alamofire.download(urlString, to: finalDestination).response { response in
if let imagePath = response.destinationURL?.path {
/// I want to this path here: com.Company.DemoApp/MainFolder/myFile.jpg
/// But not sure how to get it. How do I get this path?
}
}
问题在于Alamofire
仅为我提供了完整路径:/Library/ApplicationSupport/com.Company.DemoApp/MainFolder/myFile.jpg
。但我只想要这个部分:com.Company.DemoApp/MainFolder/myFile.jpg
。
关于如何获得这条道路的任何想法?
此外,如果您想在运行时获取文件,Apple似乎会引用Bookmark
:Apple Docs for Bookmarks
请注意,这是对之前question的跟进。
更新1
这是我认为这可行的一种方式。 (基于上面的答案)。
enum DataDirectory: String {
case feed = "com.Compnay.DemoApp/MainFolder/"
}
Alamofire.download(urlString, to: finalDestination).response { response in
let destURL = response.destinationURL!
/// One way to save this path is to do so like this:
myImageObject.partialLocalPath = "\(DataDirectory.feed.rawValue)\(destURL.lastPathComponent)"
}
}
所以我将部分保存在enum
中,并在下载完成后将name
附加到其中 - 然后我将其添加到我的模型对象中进行保存。
有什么想法吗?