2017-03-13 8 views
0

私はSwift 3にアプリケーションを更新しています.Alamofireを使用してRESTサーバーへのAPI呼び出しを処理しています。Alamofire 4 - 非関数型の値を呼び出すことはできませんHTTPURLResponse

extension Alamofire.Request { 
    func responseAllCareers(_ username: String, password: String, completionHandler: @escaping (DataResponse<Careers>) -> Void) -> Self { 
     let responseSerializer = DataResponseSerializer<Careers> { request, response, data, error in 

      guard error == nil else { 
       return .failure(BackendError.network(error: error!)) 
      } 

      let JSONResponseSerializer = DataRequest.jsonResponseSerializer(options: .allowFragments) 
      let result = JSONResponseSerializer.serializeResponse(request, response, data, error) 

      guard case let .success(jsonObject) = result else { 
       return .failure(BackendError.jsonSerialization(error: result.error!)) 
      } 

      switch result { 
      case .success(let value): 
       let api: APIMessage = APIMessage(json: value as! JSON)! 
       var careers: Careers = Careers() 

       // check for correct credentials 
       if api.result != "failure" { 
        careers = Careers(json: value as! JSON) 
        CacheManager.sharedInstance.storeCredentials(username, password: password) 
        CacheManager.sharedInstance.storeJsonInCacheByKey(CacheManager.CAREERS, json: value as! JSON) 
        careers.areCredentialsValid = true 
       } 
       return .success(careers) 
      case .failure(let error): 
       return .failure(error) 
      } 
     } 
     return response(responseSerializer: responseSerializer, completionHandler: completionHandler) 
    } 

私は最後の戻りラインで非機能タイプ「HTTPURLResponse」エラーの呼び出すことはできません値を取得していますし、私はその理由を理解することはできません。これが私の関数です。

答えて

0

あなたが実際にresponseがインスタンス化された定数である

response(responseSerializer: responseSerializer, completionHandler: completionHandler) 

代わり型の値を使用して応答を初期化しようとしています。 2番目の問題は、関数がHTTPURLResponseタイプではなくAlamofire.Requestタイプを返すと想定されることです。

関連する問題