AFHTTPSessionManager子类swift

使用自定义会话configuration创buildAFHTTPSessionManager的singletone子类的正确方法是什么?

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:]:无法识别的select器发送到实例0x7f99f8f31b70

但MyApp.DefaultSessionConfiguration是NSURLSessionConfiguration的子类,并且使用这个方法。

那么,我们如何解决这个问题呢?

问题是你不应该直接实例化一个NSURLSessionConfiguration 。 您应该通过调用以下类方法之一来实例化它: defaultSessionConfigurationephemeralSessionConfigurationbackgroundSessionConfigurationWithIdentifier 。 例如:

 let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() configuration.HTTPShouldSetCookies = true configuration.HTTPCookieStorage?.cookieAcceptPolicy = .Always