[英]AFHTTPSessionManager subclass swift
用自定義會話配置創建AFHTTPSessionManager的單調子類的正確方法是什么?
class DefaultSessionConfiguration: NSURLSessionConfiguration {
override init () {
super.init()
self.HTTPShouldSetCookies = true
HTTPCookieStorage?.cookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always
HTTPAdditionalHeaders = [ "Content-Type": "application/json"];
}
}
let baseUrl = "https://google.com"
class HTTPManager: AFHTTPSessionManager {
static let _sharedAPIManager = HTTPManager(baseURL: NSURL(string: baseUrl)!, sessionConfiguration:DefaultSessionConfiguration())
class var sharedInstance : HTTPManager {
return _sharedAPIManager
}
override init(baseURL url: NSURL!, sessionConfiguration session:NSURLSessionConfiguration? ) {
super.init(baseURL: url, sessionConfiguration: session)
self.responseSerializer = AFJSONResponseSerializer() as AFJSONResponseSerializer
self.requestSerializer = AFJSONRequestSerializer() as AFJSONRequestSerializer
}
}
嘗試將此代碼用作self.sessionManager = HTTPManager.sharedInstance
它始終崩潰並顯示消息
[MyApp.DefaultSessionConfiguration setHTTPShouldSetCookies:]:無法識別的選擇器已發送到實例0x7f99f8f31b70
但是MyApp.DefaultSessionConfiguration是NSURLSessionConfiguration的子類,因此默認情況下具有此方法。
那么,我們如何解決這個問題呢?
問題是您不應該直接實例化NSURLSessionConfiguration
。 您應該通過調用以下類方法之一來實例化它: defaultSessionConfiguration
, ephemeralSessionConfiguration
或backgroundSessionConfigurationWithIdentifier
。 例如:
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.HTTPShouldSetCookies = true
configuration.HTTPCookieStorage?.cookieAcceptPolicy = .Always
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.