【问题标题】:Ambiguous reference to member 'downloadTask(with:completionHandler:)'对成员 'downloadTask(with:completionHandler:)' 的模糊引用
【发布时间】:2019-11-17 19:30:46
【问题描述】:

我正在尝试从 URL 播放音频。

var downloadTask:URLSessionDownloadTask!
downloadTask = URLSession.shared.downloadTask(with: url, completionHandler: { (url, response, error) in
    playAudio(url: url)
})
downloadTask.resume()

但这给了我错误pf ambiguous reference。

【问题讨论】:

  • 我认为您在某处使用“Swift5”的代码,而您的项目在“Swift4”中,只需重写方法即可!
  • 不,我没有使用复制粘贴代码。我已经写好了。

标签: ios swift nsurlsessiondownloadtask


【解决方案1】:

编译器需要原生 URL,如果有原生等价物,无论如何都不要在 Swift 中使用 NS... 类。

downloadTask 是一个非可选常量。没有理由添加声明行。

你很可能会得到另一个关于需要显式'self'的错误。

func downloadTaskFromURL(url: URL) {
    let downloadTask = URLSession.shared.downloadTask(with: url, completionHandler: { (url, response, error) in
        self.playAudio(url: url)
    })
    downloadTask.resume()
}

附注:根据命名准则,该方法应命名为func downloadTask(from url: URL)

【讨论】:

    【解决方案2】:

    使用URL 而不是NSURL

    func downloadFile(from url: URL) {
        var downloadTask: URLSessionDownloadTask
        downloadTask = URLSession.shared.downloadTask(with: url, completionHandler: { (url, reponse, error) in
            // play audio
        })
        downloadTask.resume()
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 2023-03-25
      • 2016-10-15
      • 2016-11-21
      • 1970-01-01
      • 2019-11-01
      • 2016-02-16
      • 1970-01-01
      相关资源
      最近更新 更多