繁体   English   中英

Swift 访问字典值

[英]Swift access dictionary value

我有一个 Rails api,我用它来开发我的 iOS 应用程序。 我目前正在使用 alamofire 执行 HTTP 请求,并在尝试访问字典键时遇到问题。

Alamofire 的响应类型是__NSDictionaryI

AF.request("\(url)/wishlist", method: .post, parameters: parameters, encoding: URLEncoding.default).responseJSON { response in
            switch response.result {
            case .failure(let err):
                print(err)
            case .success(let res):
                print(type(of: res))
                print(res["message"])
            }
        }

我来自 Ruby,在那里我们访问 hash 键,例如hash["key"] ,但在此处尝试这样做时遇到了问题。 此请求的响应打印

{
    message = "Care was created";
    status = ok;
}

我希望我可以执行res["message"]来访问该值以传递给 toast 消息。 但是,由于以下错误,我无法编译

“Any”类型的值没有下标

谁能解释这里发生了什么以及为什么我无法捕捉到这个值?

你的第一步应该是学习 Swift 并忘记 Ruby 可能引导你进入的任何假设。 Ruby和Swift是相反的。 Ruby 没有类型(“鸭子类型”),任何变量都可以采用任何值。 Swift 具有严格的类型,变量必须在一开始就声明其类型并且永远不能更改该类型。

您可以通过将响应结果转换为确定类型来提供类型。 例如,您可以将其转换为[String:Any] 这是一个字典(类似于 Ruby 哈希)并且可以下标。

然而,最好将响应内容解码为具有message属性和status属性的结构,每个属性都被正确键入,而不是满足于无类型的responseJSON 你不应该说Any ,除非你真的必须,而且你很少需要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM