【问题标题】:Swift AFNetworking dataTaskWithRequest override issueSwift AFNetworking dataTaskWithRequest 覆盖问题
【发布时间】:2017-01-10 23:16:00
【问题描述】:

我在 Swift 中从 AFNetworking 2.5 迁移到 3.0,并且遇到了 dataTaskWithRequest 方法的问题。该方法在一个具有 AFHTTPSessionManager 超类的类中。我从 XCode 得到的错误是“方法不会覆盖其超类中的任何方法”。

在 SessionManager 类中实例化 dataTaskWithRequest 方法的正确方法是什么?

其他 StackOverflow 帖子建议删除“覆盖”,但当我这样做时,我收到错误:

“方法 'dataTaskWithRequest(:completionHandler:)' 与 Objective-C 选择器 'dataTaskWithRequest:completionHandler:' 与超类 'AFURLSessionManager' 中的方法 'dataTaskWithRequest(:completionHandler:)' 冲突Objective-C 选择器"

代码:

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)
 }


 }

【问题讨论】:

    标签: xcode swift afnetworking afnetworking-3


    【解决方案1】:

    在 Swift 2 中这应该可以工作:

    override func dataTaskWithRequest(request: NSURLRequest, completionHandler: ((NSURLResponse, AnyObject?, NSError?) -> Void)?) -> NSURLSessionDataTask 
    {
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多