【发布时间】:2016-09-15 22:31:28
【问题描述】:
【问题讨论】:
-
发布实际代码,而不是代码图像。人们通常希望重现您的代码以尝试对其进行故障排除
标签: ios swift3 nsjsonserialization
【问题讨论】:
标签: ios swift3 nsjsonserialization
自从上一次 Swift 3 更新以来,大多数返回类型都从 AnyObject 更改为 Any 并且不允许向下转换,因此在这种情况下你不得不使用显式转换。这意味着您应该创建几个guard 语句或使用可选链接if let 定义每个必要的字段。如果可能,请考虑使用map、filter、reduce,以使您的代码更优雅。示例:
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
}
你可能想查看苹果的文章Working with JSON in Swift
您还可以使用一些 json 解析/映射库,例如:
【讨论】:
请将let object : AnyObject 替换为let object : Any。
由于投射错误而显示错误。
【讨论】: