内部循环中变量的类转换

时间:2017-04-03 21:58:37

标签: 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] as? [Int] else { return }
                minemap[key] = array
            }

其中fileprivate var minemap: [String : [Int]] = [:] 但编译器说minemap[key]不正确! 所以我想将key投射到String。但是做这样的事情的最美妙的解决方案是什么:

for key as? String in json.allKeys

1 个答案:

答案 0 :(得分:1)

你可以使用[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]
}