Ошибка "Не соответствует протоколу" при расширении другого класса
Я пытаюсь проверить свой собственный класс, вводя объекты, которые адаптируют URLSession
а также URLSessionDataTask
протоколы. Я расширяю NSURLSession
а также NSURLSessionDataTask
принять эти протоколы, чтобы я мог нормально использовать существующие объекты, но использовать тестовые объекты в модульных тестах.
У меня есть следующий код с комментарием ошибки:
typealias SessionHandler = (NSData?, NSURLResponse?, NSError?) -> Void
protocol URLSession {
func dataTaskWithURL(url: NSURL, completionHandler: SessionHandler) -> URLSessionDataTask
}
protocol URLSessionDataTask {
}
// Type 'NSURLSession' does not conform to protocol 'URLSession'
extension NSURLSession : URLSession {}
extension NSURLSessionDataTask : URLSessionDataTask {}
Я понимаю ошибку, мой протокол не совсем соответствует методу, как NSURLSession
, Как это исправить?
1 ответ
В итоге я создал расширение протокола, которое создает необходимый метод, который NSURLSession
требует.
extension NSURLSession : URLSession {
func dataTaskWithURL(url: NSURL, completionHandler: SessionHandler) -> URLSessionDataTask {
return dataTaskWithURL(url, completionHandler: completionHandler) as NSURLSessionDataTask
}
}