下载Alamofire后如何获取部分文件路径?

时间:2017-01-18 21:13:04

标签: ios objective-c swift alamofire nsfilemanager

我想保存将文件下载到模型对象的路径。基于此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似乎会引用BookmarkApple 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附加到其中 - 然后我将其添加到我的模型对象中进行保存。

有什么想法吗?

0 个答案:

没有答案