Ios `未调用urlsessionelegate`方法
请注意,我已经检查了以前的答案,我没有在代码中使用回调。在这种情况下,应该调用Ios `未调用urlsessionelegate`方法,ios,swift,nsurlsession,urlsession,Ios,Swift,Nsurlsession,Urlsession,请注意,我已经检查了以前的答案,我没有在代码中使用回调。在这种情况下,应该调用委托方法 环境iOS 14.4.2 URL是有效的。文件已下载。只是代表没有接到电话 示例代码如下所示: final class Downloader: NSObject, URLSessionDelegate { private lazy var urlSession = URLSession( configuration: .default, delegate: self,
委托
方法
环境iOS 14.4.2
URL是有效的。文件已下载。只是代表没有接到电话
示例代码如下所示:
final class Downloader: NSObject, URLSessionDelegate {
private lazy var urlSession = URLSession(
configuration: .default,
delegate: self,
delegateQueue: .main
)
private var downloadTask: URLSessionDownloadTask?
func beginDownload(url: URL) {
downloadTask = urlSession.downloadTask(with: url)
downloadTask!.resume()
}
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
// NEVER CALLED
}
}
您实现的
func-urlSession(\usession:urlSession,downloadTask:URLSessionDownloadTask,didfishdownloadingto-location:URL)
方法是urlsessiondownloaddegate
的一部分,而不是URLSessionDelegate
,因此,您应该声明与URLSessionDownloadDelegate
的一致性,以便进行委托调用。如何创建Downloader
类?它被保留了吗?也许它在被收购后就被解除了created@Adam对它被保留。我也有同样的假设。@Shu Khan,下载程序被创建并保留在另一个地方。你确定下载任务真的完成了吗?另外,您正在实现的方法是URLSessionDownloadDelegate
的一部分,而不是URLSessionDelegate
,因此您还应该声明与URLSessionDownloadDelegate
的一致性。@DávidPászor,您是对的。问题是我遵守了URLSessionDataDelegate
而不是urlsessiondownloaddegate