当前位置 : 主页 > 手机开发 > 其它 >

macos – 无法将路径组件附加到Swift中的临时目录路径

来源:互联网 收集:自由互联 发布时间:2021-06-11
我正在使用NSURLDownload在Mac临时文件夹中下载zip文件.这是代码: func function () { var request:NSURLRequest = NSURLRequest(URL: NSURL(string: self.downloadLink.stringValue)!) var download:NSURLDownload = NSURLDownload(re
我正在使用NSURLDownload在Mac临时文件夹中下载zip文件.这是代码:

func function () {
    var request:NSURLRequest = NSURLRequest(URL: NSURL(string: self.downloadLink.stringValue)!)
    var download:NSURLDownload = NSURLDownload(request: request, delegate: self)
}

func download(download: NSURLDownload, decideDestinationWithSuggestedFilename filename: String) {
    tempPath = NSTemporaryDirectory().stringByAppendingPathComponent(NSProcessInfo().globallyUniqueString)
    download.setDestination(tempPath.stringByAppendingPathExtension("zip")!, allowOverwrite: false)
}

这有效,但我试图通过附加路径组件将我的zip下载隔离到我刚刚创建的临时文件夹中:

tempPath = NSTemporaryDirectory().stringByAppendingPathComponent(NSProcessInfo().globallyUniqueString).stringByAppendingPathComponent("thisShouldBeTheNameOfTheFile")

在这种情况下,下载不起作用,不创建任何内容并且不调用函数downloadDidFinish.

临时目录是否受到保护,因此我无法在其中创建新文件夹?我怎样才能解决这个问题?

download.setDestination方法,如果目录不存在,则不会自动创建目录.

试试这个:

func download(download: NSURLDownload, decideDestinationWithSuggestedFilename filename: String) {
    let tempPathDirectory = NSTemporaryDirectory().stringByAppendingPathComponent(NSProcessInfo().globallyUniqueString)

    let fileManager = NSFileManager.defaultManager()
    if fileManager.fileExistsAtPath(tempPathDirectory) == false {
        fileManager.createDirectoryAtPath(tempPathDirectory, withIntermediateDirectories: true, attributes: nil, error: nil)
    }

    let tempPath = tempPathDirectory.stringByAppendingPathComponent("thisShouldBeTheNameOfTheFile")

    download.setDestination(tempPath.stringByAppendingPathExtension("zip")!, allowOverwrite: false)
}

希望这对你有所帮助!

网友评论