使用 Alamofire 获取数组键值
Posted
技术标签:
【中文标题】使用 Alamofire 获取数组键值【英文标题】:Get array key value with Alamofire 【发布时间】:2016-10-05 03:42:56 【问题描述】:我正在发出一个简单的请求以从 JSON 文件中获取特定数据,但在获取确切数据时遇到问题。
JSON 文件:
"Something1":
"Added": "09-10-2016",
"Expires": "09-12-2016",
"Reliability": "78%",
"Views": "2",
"Priority": "High"
,
"Something2":
"Added": "09-11-2016",
"Expires": "09-13-2016",
"Reliability": "98%",
"Views": "5",
"Priority": "Low"
快速代码:
Alamofire.request("https://example.com/args.json").responseJSON response in
if let JSON = response.result.value as? [String:AnyObject]
print(JSON["Something1"])
使用print(JSON["Something1"])
,它会按预期打印Something1 的所有内容,但是当我尝试执行print(JSON["Something1"]["Views"])
时会抛出错误。我将如何解决这个问题?
【问题讨论】:
我认为您必须将 JSON["Something1"] 转换为 [String:AnyObject] @koropok 这绝对是为我做的!谢谢! 【参考方案1】:恐怕您的问题与 Alamofire 无关,更多的是使用 Swift 处理 JSON。在您的情况下,当您进行第一个可选绑定时,您将转换为 [String: AnyObject]
,这是正确的,这意味着您可以下标 JSON["Something1"]
。
但在那之后,当您尝试再次通过 JSON["Something1"]["Views"]
下标时,编译器不知道 JSON["Something1"]
有什么,因此您不能将其用作字典,而是需要再次将其转换为字典,因为使用像这样的可选绑定嵌套:
if let nestedDictionary1 = JSON["Something1"] as? [String: AnyObject]
// access individual value in dictionary
if let views = nestedDictionary1["Views"] as? Int
print(views)
您可以在 Apple 的 article 中阅读有关 JSON 工作的更多信息。
希望对你有所帮助。
【讨论】:
以上是关于使用 Alamofire 获取数组键值的主要内容,如果未能解决你的问题,请参考以下文章
使用 GAIDictionaryBuilder 后,AlamoFire + Google Analytics 出现相同的 VC 错误