【问题标题】:Alamofire Not Working Properly - Tuple Issue Different number of elementsAlamofire 无法正常工作 - 元组问题不同数量的元素
【发布时间】:2015-12-07 00:36:33
【问题描述】:

使用 Xcode 7.1

在 Alamofire responseJSON 请求中,我不能放置 4 个参数。 下面是代码

 let url2 = "https://httpbin.org/get"
    Alamofire.request(.GET, url2).responseJSON{ request, response, JSON, error  in
        print(JSON)
    }

我收到此错误:元组类型 '(NSURLRequest?, NSHTTPURLResponse?, Result)' (aka '(Optional, Optional, Result)') 和 '(_, _, _, _)' 有不同数量的元素(3 对 4)

如果我从 responseJSON 中删除“error”参数并运行它...应用程序构建但控制台上没有打印 json..

  let url2 = "https://httpbin.org/get"
    Alamofire.request(.GET, url2).responseJSON{ request, response, JSON in
        print(JSON)
    }

控制台输出

没有打印 JSON。如果您从代码中转到示例 URL,您将看到 JSON。

我已按照GitHub 的说明进行操作,但它不起作用

【问题讨论】:

    标签: ios xcode tuples alamofire


    【解决方案1】:

    Alamofire v1.x 有四个参数用于 responseJSON 闭包。 Alamofire v2.x 有三个参数。 Alamofire v3.x 现在使用单个参数 Response 调用闭包:

    Alamofire.request(.GET, url2).responseJSON { response in
        switch (response.result) {
        case .Success(let value):
            print(value)
        case .Failure(let error):
            if let data = response.data, let string = String(data: data, encoding: NSUTF8StringEncoding) {
                print(string)
            }
            print(error)
        }
    }
    

    或者,您可以为Result 使用isSuccessisFailurevaluedataerror 计算属性,例如:

    Alamofire.request(.GET, url2).responseJSON { response in
        print(response.result.value)
    }
    

    [这已针对 Alamofire 3 语法进行了更新。如果需要 Alamofire 2 的语法,请参考本题的revision history。]

    【讨论】:

    • @Rob 现在 3.0 中的 Alamofire 仅在 .Failure 的情况下返回错误,因为 response 结构。我认为您需要删除开关的let data
    【解决方案2】:

    Github 上的文档尚未更新到最新版本的 Alamofire。

    要查看 Rob 指出的属性,请查看框架的源代码。

    【讨论】:

      猜你喜欢
      • 2015-11-07
      • 2019-01-11
      • 2019-06-27
      • 2020-04-27
      • 2018-02-12
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 2017-01-21
      相关资源
      最近更新 更多