NSURLSession クラスをサブクラス化したいのですが、初期化に問題があります。基本的に、コンストラクターをオーバーライドし、authUrl
そこで定数を初期化してから、親の init メソッドを呼び出します。
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 のソース コードから、2 つの初期化子があることがわかりました。
public /*not inherited*/ init(configuration: NSURLSessionConfiguration)
public /*not inherited*/ init(configuration: NSURLSessionConfiguration, delegate: NSURLSessionDelegate?, delegateQueue queue: NSOperationQueue?)
「最長」の init が指定された初期化子であると予想していましたが、そうではありません。その指定されたイニシャライザはinit()
、ソース コードでも指定されていないものだと思います。初期化子をオーバーライドして構成をセットアップするにはどうすればよいNSURLSessionConfiguration
ですか?