我正在尝试使用Xcode8在iOS 10上子类化URLSession。我认为Swift类型的系统有点混乱,但我可能遗漏了一些东西:
class MyURLSession: URLSession {
// No errors
override func downloadTask(with request: URLRequest) -> URLSessionDownloadTask {
return URLSessionDownloadTask()
}
// No errors
override func downloadTask(with url: URL) -> URLSessionDownloadTask {
return URLSessionDownloadTask()
}
// See errors below
override func downloadTask(with request: URLRequest, completionHandler: @escaping (URL?, URLResponse?, Error?) -> Void) -> URLSessionDownloadTask {
return URLSessionDownloadTask()
}
// See errors below
override func downloadTask(with url: URL, completionHandler: @escaping (URL?, URLResponse?, Error?) -> Void) -> URLSessionDownloadTask {
return URLSessionDownloadTask()
}
}
error: method does not override any method from its superclass
override func downloadTask(with request: URLRequest, completionHandler: @escaping (URL?, URLResponse?, Error?) -> Void) -> URLSessionDownloadTask {
^
Foundation.URLSession:6:15: note: potential overridden instance method 'downloadTask(with:completionHandler:)' here
open func downloadTask(with request: URLRequest, completionHandler: @escaping (URL?, URLResponse?, Error?) -> Swift.Void) -> URLSessionDownloadTask
^
Foundation.URLSession:7:15: note: potential overridden instance method 'downloadTask(with:completionHandler:)' here
open func downloadTask(with url: URL, completionHandler: @escaping (URL?, URLResponse?, Error?) -> Swift.Void) -> URLSessionDownloadTask
^
/Users/pshah/Networking/Webservice.swift:108:19: error: method does not override any method from its superclass
override func downloadTask(with url: URL, completionHandler: @escaping (URL?, URLResponse?, Error?) -> Void) -> URLSessionDownloadTask {
^
Foundation.URLSession:6:15: note: potential overridden instance method 'downloadTask(with:completionHandler:)' here
open func downloadTask(with request: URLRequest, completionHandler: @escaping (URL?, URLResponse?, Error?) -> Swift.Void) -> URLSessionDownloadTask
^
Foundation.URLSession:7:15: note: potential overridden instance method 'downloadTask(with:completionHandler:)' here
open func downloadTask(with url: URL, completionHandler: @escaping (URL?, URLResponse?, Error?) -> Swift.Void) -> URLSessionDownloadTask
^发布于 2016-09-15 23:27:50
我想通了。我的项目中有一个Error,所以必须在有错误的方法中将Error?限定为Swift.Error?。
https://stackoverflow.com/questions/39514787
复制相似问题