将文件保存在文件夹

时间:2017-08-24 13:45:28

标签: ios swift

我有ViewController个单元格。如果用户单击其中一个单元格,则会使用id(tableNumber)进入下一个TableController。在TableController用户可以下载文件。

问题:当第一个tableView(id1)中的用户下载文件在ViewController中返回并在下载之后进入第二个tableView(id2)文件保存在一个文件夹中:/Documents/id2。但在这种情况下我需要保存这样的文件:第一个文件/Documents/id1第二个文件/Documents/id2。怎么做?

TableController中的代码,用于在DownloadManager中传递ID:

DownloadManager.shared.id = self.id

DownloadManager中用于保存文件的代码:

var id = ""

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

        let fileName = downloadTask.originalRequest?.url?.lastPathComponent
        let path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
        let documentDirectoryPath:String = path[0]
        let fileManager = FileManager()
        var destinationURLForFile = URL(fileURLWithPath: documentDirectoryPath.appending("/\(id)"))
        do {
            try fileManager.createDirectory(at: destinationURLForFile, withIntermediateDirectories: true, attributes: nil)
            destinationURLForFile.appendPathComponent(String(describing: fileName!))
            try fileManager.moveItem(at: location, to: destinationURLForFile)
        }catch(let error){
            print(error)
        }

    }

1 个答案:

答案 0 :(得分:0)

对于每次下载,请创建DownloadManager实例并下载视频。

您可以创建一个变量来保存DownloadManager中的文件夹路径,行/表ID。

由于您为每次下载创建了DownloadManager的新实例,因此可以为每个视图控制器和行/表ID定义不同的文件夹路径。

下载文件后,使用上述变量将文件保存在文件夹中。

不要使用DownloadManager.shared.

使用DownloadManager()

希望这会有所帮助:)