下载后移动项目

时间:2017-11-26 14:57:46

标签: ios swift asynchronous download document

我正在处理文件下载。下载完成后,我想将下载的文件移动到apps文档目录,我的设置:

func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
    debugPrint("didFinishDownloadingTo: \(location)")

    let documentsDirectory = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
    let saveDirectory = documentsDirectory.appendingPathComponent("file1.mp4")

    do {
        try FileManager.default.moveItem(at: location, to: saveDirectory)
    } catch {
        print("didFinishDownloadingTo error \(error.localizedDescription)")
    }
}

在某些时候,我想看到我下载的所有文件:

do {
    let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
    let documentsDirectory = String(describing: paths[0])

    let items = try FileManager.default.contentsOfDirectory(atPath: documentsDirectory)

    for item in items {
        print("Found \(item)")
    }
} catch {
    print("contentsOfDirectory \(error.localizedDescription)")
}

这部分抛出:

The folder “Documents” doesn’t exist.

didFinishDownloadingTo 方法没有抛出错误,所以我假设moveitem函数成功,但我不知道为什么我无法列出我的项目... 我做了一些研究,但没有结果,我不知道为什么我不能列出。

1 个答案:

答案 0 :(得分:0)

只需打印路径并检查这些文件夹即可尝试调试。这样您就可以看到哪个步骤没有按预期工作。我认为在调试时可能更容易捕获的路径存在一个小错误。

提示:使用模拟器但不是真实设备进行调试。因为它可以让您更轻松地浏览文件夹。

希望它有所帮助。