I have this code:
var jsonResult = (try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as! NSDictionary
var count = jsonResult["levels"]!.count as Int
for var i=0; i<count; ++i {
let obj = jsonResult["levels"]![i] as! NSDictionary
...
}
On the last line I am receiving this error:
Ambiguous use of subscript
How can I resolve this?
This code has worked for some time but with the upgrade to xcode 7.1 it broke and stopped working.
You have to tell the compiler what the intermediary object is in the line
let obj = jsonResult["levels"]![i] as! NSDictionary
After the statement jsonResult["levels"]!
the compiler does not know what kind of object he is dealing with. You have to tell it that is an NSArray
or something else:
let obj = (jsonResult["levels"] as! NSArray)[i] as! NSDictionary
Of course you should additionally make sure that you can actually do all that casting and that the objects inside the json are really of the expected type.
Even a little bit shorter using only one cast by directly casting to an array of NSDictionary
:
let obj = (jsonResult["levels"] as! [NSDictionary])[i]
The reasoning remains the same: you tell the compiler of what type jsonResult["levels"]
. It is supposed to be an array containing NSDictionary
s.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With