“在Alamofire 4.0上输入'Any'没有下标成员”错误

时间:2016-09-23 08:06:36

标签: ios json swift alamofire

我正在<artifactId>gttown-dao-enterprise</artifactId> <dependency> <groupId>com.gttown</groupId> <artifactId>gt-common-mybatis</artifactId> <version>1.0.0-SNAPSHOT</version> <exclusions> <exclusion> <groupId>com.gttown</groupId> <artifactId>gt-common-util</artifactId> </exclusion> </exclusions> </dependency> 使用Alamofire 4.0并使用以下代码来解析Swift 3.0

JSON

它给了我以下回应:

Alamofire.request(url!, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in

    switch(response.result) {
        case .success(_):
            if let JSON = response.result.value{
                print(JSON)
                //print(JSON["name"])
                //print(JSON["age"])
            }
            break

        case .failure(_):
            print("There is an error")
            break
    }
}

问题是我无法访问这些值(( { Name = "Peter"; Age = "18"; } ) Name),因为当我尝试Age时,我收到以下错误:

  

类型'Any'没有下标成员

我也尝试添加JSON["name"],因为这个问题建议:Alamofire fire variable type has no subscript members而另一个也建议:Type Any has no subscript members Error in Swift 3.0?但是当我使用它时,任何回复都会给我。

如果我使用:

as? [String: Any]

case .success(_): if let JSON = response.result.value as? [String: Any]{ print(JSON) print(JSON["TitularEmail"] as! String) } break 或Xcode的控制台中都没有显示任何错误。相反,没有给出任何回应。

如何以正确的方式解决此错误?没问题,在我没有收到任何错误之前使用解决方案但是我没有得到任何响应,所以它根本没有解决它。

提前致谢!

1 个答案:

答案 0 :(得分:2)

请尝试以下代码:

Alamofire.request(url!, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON { response in

switch(response.result) {
    case .success(_):
        if let JSON = response.result.value as! [[String : Any]]!{
                print("JSON: \(JSON)")
                let dic = JSON[0] as [String:AnyObject]!
                print("TitularEmail : ",dic?["TitularEmail"])
            }
        break

    case .failure(_):
        print("There is an error")
        break
}
}