Swift で AFNetworking 2.5 から 3.0 に移行しましたが、dataTaskWithRequest メソッドに問題がありました。このメソッドは、AFHTTPSessionManager のスーパークラスを持つクラスにあります。XCode から得られるエラーは、「メソッドはそのスーパークラスのメソッドをオーバーライドしません」というものです。
SessionManager クラスで dataTaskWithRequest メソッドをインスタンス化する適切な方法は何ですか?
他の StackOverflow の投稿では、「オーバーライド」を削除することを推奨していますが、そうするとエラーが発生します。
「Objective-C セレクター 'dataTaskWithRequest:completionHandler:' を持つメソッド 'dataTaskWithRequest( :completionHandler:)' は、同じ Objective-C セレクターを持つスーパークラス 'AFURLSessionManager' のメソッド 'dataTaskWithRequest( :completionHandler:)' と競合します」
コード:
class SessionManager: AFHTTPSessionManager {
...
func dataTaskWithRequest(request: NSURLRequest!, completionHandler: ((NSURLResponse?, AnyObject?, NSError?) -> Void)) ->
NSURLSessionDataTask! {
if let request = request as? NSMutableURLRequest {
request.setValue(gQuidsiCache.amznSessionID, forHTTPHeaderField: amazonSesionIDHeader)
request.setValue(gQuidsiCache.visitorID, forHTTPHeaderField: legacyVisitorIDHeader)
}
return super.dataTaskWithRequest(request, completionHandler: completionHandler)
}
}