Я хочу подкласс класса NSURLSession, но у меня проблема с инициализацией. В основном я переопределяю конструктор и инициализирую константу authUrl
, затем вызывая метод родительского init.Инициализатор не переопределяет назначенный инициализатор при подклассе NSURLSession Swift
class NSURLAuthSession: NSURLSession {
let authUrl:NSURL;
//Error: Initializer does not override a designated initializer from its superclass
override init(configuration: NSURLSessionConfiguration, delegate: NSURLSessionDelegate?, delegateQueue queue: NSOperationQueue?){
self.authUrl = NSURL.URLWithBaseURLString("http://192.168.10.105:8888/api/v1", pathSegments: ["users", "login"])!
super.init(configuration: configuration, delegate: delegate, delegateQueue: queue)
}
}
Из исходного кода NSURLSession я узнал, что у него есть два инициализаторов:
public /*not inherited*/ init(configuration: NSURLSessionConfiguration)
public /*not inherited*/ init(configuration: NSURLSessionConfiguration, delegate: NSURLSessionDelegate?, delegateQueue queue: NSOperationQueue?)
Я ожидал, что «длинный» INIT, чтобы быть назначенным инициализатором, но это не так. Я подозреваю, что указанный инициализатор - это init()
, который даже не указан в исходном коде. Как я могу переопределить инициализатор и настроить конфигурацию NSURLSessionConfiguration
?
Спасибо за ответ, просто для уточнения, NSSession можно инициализировать конфигурацией и делегировать, но его подкласс NSURLAuthSession не может? – Alex
Да, потому что подкласс должен назвать инициализатор, назначенный суперклассом. Вы можете прочитать больше о назначенных и удобных инициализаторах. Https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html – mixel