Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios `未调用urlsessionelegate`方法_Ios_Swift_Nsurlsession_Urlsession - Fatal编程技术网

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