Swift3 JSON错误-无法为AnyObject类型的值下标
在从swift2到swift3的转换中获取错误(无法为“AnyObject”类型的值下标)。代码来自github的垄断游戏,使用swift2.3编写Swift3 JSON错误-无法为AnyObject类型的值下标,json,swift,swift3,swift2,swift2.3,Json,Swift,Swift3,Swift2,Swift2.3,在从swift2到swift3的转换中获取错误(无法为“AnyObject”类型的值下标)。代码来自github的垄断游戏,使用swift2.3编写 let bundle = Bundle.main let path = bundle.path(forResource: "properties", ofType: "json") var error: NSError? var data: NSData = NSData(contentsOfFile: path!)
let bundle = Bundle.main
let path = bundle.path(forResource: "properties", ofType: "json")
var error: NSError?
var data: NSData = NSData(contentsOfFile: path!)!
do {
let json = try? JSONSerialization.jsonObject(with: data as Data, options: JSONSerialization.ReadingOptions.allowFragments) as AnyObject
if let objects = json as? [AnyObject] {
for obj in objects {
var category = Category.special
switch obj["Group"] as String! { //error!
case "Brown": category = .brown
case "LightBlue": category = .lightBlue
case "Pink": category = .pink
case "Orange": category = .orange
case "Red": category = .red
case "Yellow": category = .yellow
case "Green": category = .green
case "Blue": category = .blue
default: category = .special
}
let name = obj["Name"] as String //error!
let price = obj["Price"] as Int //error!
let tile = obj["Position"] as Int //error!
var rent = 0
if let r = obj["Rent"] as? Int { //error! Ambiguous use of "subscript"
rent = r
}
let property = Property(name: name, category: category, price: price, tile: tile, rent: rent)
game.tiles.append(property)
}
}
} catch {
print("error")
}
JSON:
[
{
“名称”:“开始”,
"立场":一,,
“价格”:0,
“租金”:0,
“组”:“开始”
},
等等]将json指定为字典数组,如
[[String:Any]]
,而不是将其声明为[AnyObject]
if let objects = (try? JSONSerialization.jsonObject(with: data as Data, options: [])) as? [[String:Any]] {
for obj in objects {
var category = Category.special
switch obj["Group"] as! String {
case "Brown": category = .brown
case "LightBlue": category = .lightBlue
case "Pink": category = .pink
case "Orange": category = .orange
case "Red": category = .red
case "Yellow": category = .yellow
case "Green": category = .green
case "Blue": category = .blue
default: category = .special
}
//Add your other code
}
}
您需要指定
obj
是一个字典,因此您可以执行obj[“MyKey”]