[英]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.