【发布时间】:2018-03-06 17:17:15
【问题描述】:
我有如下代码这样的 json 数据:
{
"all": [
{
"ModelId": 1,
"name": "ghe",
"width": 2
},
{
"ModelId": 2,
"name": "ban",
"width": 3
}]
}
我尝试获取 modelId 并将其转换为字符串,但它不适用于我的代码:
let data = NSData(contentsOf: URL(string: url)!)
do {
if let data = data, let json = try JSONSerialization.jsonObject(with: data as Data) as? [String: Any], let models = json["all"] as? [[String:Any]] {
for model in models {
if let name = model["ModelId"] as? String {
_modelList.append(name)
}
}
}
completion(_modelList)
}catch {
print("error")
completion(nil)
}
如何解决这个问题?谢谢。
【问题讨论】:
-
是的,修复键名并创建一个字符串而不是强制转换。类似于:
if let name = String(model["ModelId"])...,尽管您可能希望分两步完成,因为它将是一个可选的整数。 -
@EricS 它仍然无法正常工作...
-
@DucPhan ModelID 是整数而不是字符串
-
请注意,您不应使用 NSData(contentsOf:URL) 同步获取非本地资源文件。您应该使用 URLSession dataTask(with: URL) 异步获取它。