我转换为swift 2.3后出现了这个错误。
guard let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary else {
throw JSONError.ConversionFailed
}
guard
let loadedWeather = json["weather"]![0]["description"] as? String,
let loadedTemperatur = json["main"]!["temp"] as? Float,
let loadedWindSpeed = json["wind"]!["speed"] as? Float
else {
print("Weather JSON-Parsing failed")
return
}
Ambiguous use of subscript
错误来自声明“loadedWeather,loadedTemperatur和loadedWindSpeed”。
已经尝试将NSDictionary更改为Dictionary和其他东西,帮助了代码中的另一个位置,但是这里......
谢谢你们
答案 0 :(得分:1)
这是因为编译器不知道你的每一行中间对象是什么......所以可能
if let weather = json["weather"] as? [[String:String]], firstObject = weather.first as? [String:String]{
let loadedWeather = firstObject["description"]
}
// same for other objects i.e. `json["main"]` and `json["wind"]` with its return type
答案 1 :(得分:0)
我认为问题在于编译器无法确定json["weather"]
是什么,您可能需要在代码中更具体。
尝试
let loadedWeather = (json["weather"] as! [[String:AnyObject]])[0]["description"] as? String