Alamofire,错误消息使用未声明的类型'GenericResponseSerializer'

时间:2015-10-03 15:21:41

标签: ios swift alamofire

我通过ray wanderlich跟随alamofire / swift turorial,我使用swift 2.0和alamofire 3.0 beta3。现在我已经处理了一些小问题,但是这个我坚持了

  message: Use of undeclared type 'GenericResponseSerializer'
 Generic type 'Result' specialized with too few type parameters (got 1, but expected 2)

这是我的代码的一部分

extension Alamofire.Request {

    /** Response serializer for images from: http://www.raywenderlich.com/85080/beginning-alamofire-tutorial */
    class func imageResponseSerializer() -> GenericResponseSerializer<UIImage> {
        return GenericResponseSerializer { request, response, data in

            guard let validData = data else {
                let failureReason = "Data could not be serialized. Input data was nil."
                let error = Error.errorWithCode(.DataSerializationFailed, failureReason: failureReason)
                return .Failure(data, error)
            }

            if let image = UIImage(data: validData, scale: UIScreen.mainScreen().scale) {
                return Result<UIImage>.Success(image)
            }
            else {
                return .Failure(data, Error.errorWithCode(.DataSerializationFailed, failureReason: "Unable to create image."))
            }

        }
    }

    /** Convenience method for returning images from: http://www.raywenderlich.com/85080/beginning-alamofire-tutorial */
    func responseImage(completionHandler: (NSURLRequest?, NSHTTPURLResponse?, Result<UIImage>) -> Void) -> Self {
        return response(responseSerializer: Request.imageResponseSerializer(), completionHandler: completionHandler)
    }
}

ps:我在哪里/如何下载Alamofire 2.0 ??

3 个答案:

答案 0 :(得分:1)

您是否尝试过使用AlamofireImage?看起来像一个很好的扩展。 Alamofire 2.0.2,但您应该通过Carthage进行测试,这是一个非常简单明了的工具。

答案 1 :(得分:1)

该示例不适用于Alamofire 3.0。 GenericResponseSerializer逻辑已被大量重构。请查看我们最新的README和3.0迁移指南。

修改

此外,您应该查看AlamofireImage,其中包含响应图像序列化的所有逻辑以及许多其他很酷的功能。它也是由AlamofireSF建造的,并且将得到很好的支持。

答案 2 :(得分:0)

我对一个人没有完全理解GenericResponseSerializer的逻辑。所以我为我的应用程序做了什么(因为我确实需要这个功能)只是完全注释掉你刚刚在帖子中写的代码(我跟你一样跟着Ray Wenderlich教程)然后在我的PhotoBrowserCollectionViewController中,我改变了一些东西我的cellForItemAtIndexPath函数中的一点。它现在看起来像这样:

delims=[not space?]

还没有完全发挥作用(因为我的API部分根本不起作用),所以也许这是完全错误的,但至少它是构建的。我使用了AlamofireImage,只是使用他们在GitHub页面上的基本解释,由回复这篇文章的第一个人链接。至少使用它,看看它在哪里。