2016-09-13 3 views
-1

У меня возникли ошибки после преобразования в swift 2.3.Неоднозначное использование «индекса» после преобразования в 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 словарь и другие вещи, помог на другую позицию в коде, но здесь ....

спасибо, ребята

ответ

0

Я думаю, что проблема в том, что компилятор не может работать, что json["weather"] это, Вы, возможно, должны быть более конкретными в вашем коде.

Попробуйте

let loadedWeather = (json["weather"] as! [[String:AnyObject]])[0]["description"] as? String 
+0

Спасибо, ребята! Вы оба решили мою проблему, я решил это решение. – kuemme01

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 
Смежные вопросы