JSONSerialization AnyObject SWIFT3转换问题

时间:2016-09-15 22:31:28

标签: ios swift3 nsjsonserialization

我已经转换为Swift 3,并且在向AnyObject分配JSONSerialization.jsonObject时收到了以下错误。有没有人遇到这个问题并知道修复?

enter image description here

2 个答案:

答案 0 :(得分:0)

自上次 Swift 3 更新以来,大多数返回类型已从AnyObject更改为Any并且不允许向下转发,因此在这种情况下您将被迫使用显式投。这意味着您应该生成几个guard语句或使用可选链接if let来定义每个必需字段。如果可能,请考虑使用mapfilterreduce来使您的代码更加优雅。例如:

guard方式:

guard let object = try JSONSerialization.jsonObject(with: data) as? [[String: Any]] else { return nil }
guard let field1 = object[0]["field1_token"] as? [Any] else { return nil }
//do your thing

if let方式:

if let object = try JSONSerialization.jsonObject(with: data) as? [[String: Any]],
let field1 = object[0]["field1_token"] as? [Any] {
//do your thing
}

您可以查看Apple的文章Working with JSON in Swift

此外,您可以使用一些json解析/映射库,如下所示:

SwiftyJSON

Gloss

答案 1 :(得分:-1)

请将let object : AnyObject替换为let object : Any

因错误投射而显示错误。