Я не очень опытен в разработке iOS. Несмотря на то, что делает подкласс AFHTTPSessionManager
XCode предложил мне включать требуется init(coder)
:Swift - Почему в AFHTTPSManManager требуется init (coder)?
import UIKit
let _sharedAPIManager = APIManager(baseURL: NSURL(string: API_URL)!)
class APIManager: AFHTTPSessionManager {
/**
* Singleton service
* (https://github.com/hpique/SwiftSingleton)
*/
class var sharedInstance : APIManager {
return _sharedAPIManager
}
init(baseURL url: NSURL!) {
super.init(baseURL: url, sessionConfiguration: nil)
self.responseSerializer = AFJSONResponseSerializer() as AFJSONResponseSerializer
self.requestSerializer = AFJSONRequestSerializer() as AFJSONRequestSerializer
self.requestSerializer.setValue(API_KEY, forHTTPHeaderField: "X-Api-Key")
self.requestSerializer.setValue("3", forHTTPHeaderField: "X-Api-Version")
}
// this was inserted by XCode
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Мой главный вопрос, почему это необходимо? Насколько я знаю, NSCoder
касается кода, связанного с раскадрой (например, когда он загружается).
Связанный с этим вопрос Class does not implement its superclass's required members содержит некоторую информацию, но означает ли это, что все классы Swift, которые расширяют объекты Objective-C, нуждаются в этом?
Вы уверены, что этот код возвращает экземпляр singleton, init должен быть закрытым, если вам нужно получить экземпляр, который вам нравится, var x = APIManager. sharedInstance, это правильно? –