Ошибка "Не соответствует протоколу" при расширении другого класса

Я пытаюсь проверить свой собственный класс, вводя объекты, которые адаптируют 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
  }
}
Другие вопросы по тегам