2015-09-01 21 views
3

Я обновился до XCode 7 beta 6 и Alamofire необходимо было обновить до бета-версии 3. При этом мне нужно обновить области кода, которые используют Alamofire. Одной из областей, в которой я испытываю трудности с обновлением, является код, который используется для извлечения изображения с указанного URL-адреса и загрузки его в UIImageView.Alamofire Использование незаявленного типа «Сериализатор»

Ранее расширение для Alamofire, что обработано это было:

extension Alamofire.Request { 
    class func imageResponseSerializer() -> Serializer { 
     return { request, response, data in 
      if data == nil { 
       return (nil, nil) 
      } 

      let image = UIImage(data: data!, scale: UIScreen.mainScreen().scale) 

      return (image, nil) 
     } 
    } 

    func responseImage(completionHandler: (NSURLRequest, NSHTTPURLResponse?, UIImage?, NSError?) -> Void) -> Self { 
     return response(serializer: Request.imageResponseSerializer(), completionHandler: { (request, response, image, error) in 
      completionHandler(request!, response, image as? UIImage, error) 
     }) 
    } 
} 

Но не то, что бросает ошибку

Use of undeclared type 'Serializer' 

Я понимаю, что Alamofire не использует Serializer больше, но делает кто-нибудь знает, где я могу найти документацию или примеры, что делать сейчас при получении изображений?

+0

'Serializer' был недокументированная реализацией уровень детализации, на самом деле, просто' typealias' для типа закрытия, который принимает '(NSURLRequest, NSHTTPURLResponse , NSData) 'tuple и возвращает' (AnyObject, NSError) '. – mattt

+0

См. Текущую реализацию для получения ответа JSON за идею о переносе старого кода. – mattt

+0

Также изо всех сил пытаюсь понять это. Вы когда-нибудь это выяснили? –

ответ

1

Как вы можете найти в ридми сериализации была переписана.

Вы shoudl быть в состоянии использовать метод ниже:

public protocol ResponseObjectSerializable { 
    init?(response: NSHTTPURLResponse, representation: AnyObject) 
} 

extension Request { 
    public func responseObject<T: ResponseObjectSerializable>(completionHandler: Response<T, NSError> -> Void) -> Self { 
     let responseSerializer = ResponseSerializer<T, NSError> { request, response, data, error in 
      guard error == nil else { return .Failure(error!) } 

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

      switch result { 
      case .Success(let value): 
       if let 
        response = response, 
        responseObject = T(response: response, representation: value) 
       { 
        return .Success(responseObject) 
       } else { 
        let failureReason = "JSON could not be serialized into response object: \(value)" 
        let error = Error.errorWithCode(.JSONSerializationFailed, failureReason: failureReason) 
        return .Failure(error) 
       } 
      case .Failure(let error): 
       return .Failure(error) 
      } 
     } 

     return response(responseSerializer: responseSerializer, completionHandler: completionHandler) 
    } 
} 
Смежные вопросы