2016-10-03 5 views
3

Когда я обновился до Alamofire v4, я получил две ошибки.Alamofire v4 использование ответа незаявленного типа

Первый использование необъявленной ответа типа, которые я получаю от этой линии:

func responseSavedAdsArray(_ completionHandler: (Response<SavedAdsWrapper, NSError>) -> 

Вторая ошибка использование неразрешенного идентификатора ResponseSerializer, который я получаю от этой линии:

let responseSerializer = ResponseSerializer<SavedAdsWrapper, NSError> { request, response, data, error in 

Вот весь мой код:

extension Alamofire.Request { 
    func responseSavedArray(_ completionHandler: (Response<SavedWrapper, NSError>) -> Void) -> Self { 
     let responseSerializer = ResponseSerializer<SavedWrapper, NSError> { request, response, data, error in 
      guard error == nil else { 
       return .Failure(error!) 
      } 
      guard let responseData = data else { 
       let failureReason = "Array could not be serialized because input data was nil." 
       let userInfo: Dictionary<NSObject, AnyObject> = [NSLocalizedFailureReasonErrorKey: failureReason, Error.UserInfoKeys.StatusCode: response!.statusCode] 
       let error = NSError(domain: Error.Domain, code: Error.Code.StatusCodeValidationFailed.rawValue, userInfo: userInfo) 
       return .Failure(error) 
      } 

      let JSONResponseSerializer = Request.JSONResponseSerializer(options: .AllowFragments) 
      let result = JSONResponseSerializer.serializeResponse(request, response, responseData, error) 

      switch result { 
      case .Success(let value): 
       let json = JSON(value) 
       let wrapper = SavedWrapper() 

       wrapper.next = json["saveditems"]["next_page_url"].stringValue 
       wrapper.previous = json["saveditems"]["prev_page_url"].stringValue 
       wrapper.count = json["saveditems"]["total"].intValue 

       var allSaved:Array = Array<Saved>() 
       print(json) 
       let results = json["saveditems"]["data"] 
       print(results) 
       for jsonAdata in results 
       { 

        let adsJData = SavedAds(json: jsonAdata.1, id: Int(jsonAdata.0)) 
        allSaved.append(adsJData) 
       } 
       wrapper.saveditems = allSaved 
       return .Success(wrapper) 
      case .Failure(let error): 
       return .Failure(error) 
      } 
     } 

     return response(responseSerializer: responseSerializer, 
         completionHandler: completionHandler) 
    } 
} 

Так что же это значит?

ответ

3

Изменение первого

func responseSavedAdsArray(_ completionHandler: (Response<SavedAdsWrapper, NSError>) -> 

в

func responseSavedAdsArray(_ completionHandler: (DataResponse<SavedAdsWrapper>) -> 

EDITED

let responseSerializer = ResponseSerializer<SavedAdsWrapper, NSError> { request, response, data, error in 

в

let responseSerializer = DataResponseSerializer<SavedAdsWrapper> { request, response, data, error in 
+0

Это исправляло первую ошибку, но я все еще получаю: использование неразрешенного идентификатора ResponseSerializer – user2636197

+0

не так ли? попробуйте DataResponseSerializer :) – Cruz

+0

My bad! была опечатка :) – user2636197