【问题标题】:Ambiguous use of subscript in Json decode - Swift 2Json解码中下标的模棱两可使用 - Swift 2
【发布时间】:2017-01-28 14:23:49
【问题描述】:

我正在尝试从服务器获取以下 json 响应:

[{"m", "OK"}]

当我在模拟器中玩游戏时,我使用了以下代码,但当我生成要上传到苹果商店的存档时,它会出现错误

“下标”使用不明确

func funcao(completo: () -> Void, falha: () -> Void){
    let parametros = [
        "operacao" : "update",
        "tabela" : "1"
    ]

    Alamofire.request(.POST, UrlServerPOST, parameters: parametros)
        .responseJSON { response in

            if let JSON = response.result.value {
                print("JSON: \(JSON)")

                if let item = JSON[0] as? [String: String] { //Error here
                    if let resp = item["m"] as? String {
                        print(resp)
                        if resp == "OK" {
                            completo()
                        }
                        else
                        {
                            falha()
                        }
                    }
                    else
                    {
                        falha()
                    }
                }
                else
                {
                    falha()
                }
            }
    }
}

我尝试了几种方法来解决此错误,但没有任何解决。有谁知道如何解决这个问题?

【问题讨论】:

  • JSON 有下标运算符吗?还是应该先尝试将JSON 转换为[[String: String]]
  • [[String: String]] 对我也不起作用@luk2302
  • 告诉编译器response.result.value的类型

标签: swift alamofire


【解决方案1】:

每个 JSON 对象要么是字典,要么是数组。你必须告诉 Swift 用一个键(作为一个字典)或一个整数索引(作为一个数组)来为它下标。看起来 JSON 这里是一个数组。更改此行:

if let JSON = response.result.value as? [AnyObject] {
    // ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    相关资源
    最近更新 更多