Ios 循环内变量的类强制转换
我有一个简单的json: {“someparam1”:[1,2,3],“someparam2”:[1,2,3],…} 为了解析,我使用以下代码:Ios 循环内变量的类强制转换,ios,json,swift,swift3,Ios,Json,Swift,Swift3,我有一个简单的json: {“someparam1”:[1,2,3],“someparam2”:[1,2,3],…} 为了解析,我使用以下代码: guard let json = try JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary else { return } for key in json.allKeys{ guard let array = json[key]
guard let json = try JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary else { return }
for key in json.allKeys{
guard let array = json[key] as? [Int] else { return }
minemap[key] = array
}
其中fileprivate-var-minemap:[字符串:[Int]]=[:]
但是编译器说minemap[key]
不正确!
所以我想把键
转换成字符串
。但是做这样的事情最漂亮的解决方案是什么:
用于键as?json.allKeys中的字符串
?您可以只使用
[String:[Int]]
而不是NSDictionary
,强制转换一次并避免所有进一步的强制转换
guard let json = try JSONSerialization.jsonObject(with: data, options: []) as?[String: [Int]] else { return }
minemap = json
如果不是所有值的类型都是[Int]
,则这可能不起作用。如果是这种情况,请改用[String:Any]
,稍后再强制转换值
guard let json = try JSONSerialization.jsonObject(with: data, options: []) as?[String: Any] else { return }
for (key, value) in json {
minemap[key] = json[key] as? [Int]
}
为什么
NSDictionary
?使用适当的Swift字典和适当的类型。什么是minemap
?您的问题涉及到transitmap
@rmaddy,已修复。您建议如何解析json?@rmaddy,我只与NSDictionaryOpen合作过打开Swift手册,了解Swift本机集合。