Ios 循环内变量的类强制转换

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]

我有一个简单的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] 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本机集合。