【问题标题】:(_, _, _) -> Void' is not convertible to 'Response<AnyObject, NSError> -> Void'(_, _, _) -> Void' 不能转换为 'Response<AnyObject, NSError> -> Void'
【发布时间】:2016-01-02 19:55:29
【问题描述】:

我按照以前成功导入的方式导入了Alamofire,当我有这段代码时,出现错误:

Alamofire.request(.GET, postEndPoint).responseJSON {(request, response, result) in
//Error: '(_, _, _) -> Void' is not convertible to 'Response<AnyObject, NSError> -> Void'

        guard let value = result.value else {
            print("Error: did not receive data")
            return
        }

        guard result.error == nil else {
            print("error calling GET on /posts/1")
            print(result.error)
            return
        }

        let post = JSON(value)

        print("The post is: " + post.description)
        if let title = post["title"].String {
            print("The title is: " + title)
        } else {
            print("Error parsing /posts/1")
        }
}

我没有将 CocoaPods 用于 Alamofire。

【问题讨论】:

    标签: xcode swift alamofire


    【解决方案1】:

    请参阅Alamofire 3.0 Migration Guide

    Alamofire.request(.GET, postEndPoint).responseJSON { response in
        if let JSON = response.result.value {
            print("JSON: \(JSON)")
        }
    }
    

    这是获取 JSON 的新方法。


    response.result 是获取result 的新方式。

    Alamofire.request(.GET, postEndPoint).responseJSON { response in
        guard let value = response.result.value else {
            print("Error: did not receive data")
            return
        }
    
        guard response.result.error == nil else {
            print("error calling GET on /posts/1")
            print(response.result.error)
            return
        }
    
        let post = JSON(value)
    
        print("The post is: " + post.description)
        if let title = post["title"].String {
            print("The title is: " + title)
        } else {
            print("Error parsing /posts/1")
        }
    }
    

    【讨论】:

    • 谢谢!如果我必须声明“响应”和“结果”常量怎么办?
    • @BrightFuture 我不明白你的问题。您永远不需要指定它们的类型,这是自动完成的。旧请求为response.request,旧响应为response.response,旧结果为response.result
    • 请查看更新后的代码。如果我将(request, response, result)替换为request,会出现多个错误提示:使用未解析的标识符resultJSON,我应该如何解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 2016-08-14
    • 2018-11-05
    相关资源
    最近更新 更多