类型'Any'没有下标成员错误Json [重复]

问题描述 投票:-1回答:1

这个问题在这里已有答案:

我收到了这个错误

类型“任何”没有下标成员

在'dayZeroTemperatureMax,dayZeroTemperatureMin'等行上,我不知道如何修复它。我在互联网上搜索,但所有修复都不能解决我的问题。这就是我得到的:

struct Weekly {

    var dayZeroTemperatureMax: Int
    var dayZeroTemperatureMin: Int

    var dayOneTemperatureMax: Int
    var dayOneTemperatureMin: Int
    var dayOneTime: String?
    var dayOneIcon: UIImage

    init (weatherDictionary: NSDictionary) {

        let weeklyWeather = weatherDictionary["daily"] as! NSDictionary

        let weeklyForcast = weeklyWeather["data"] as! NSArray

        //DAY ZERO
        dayZeroTemperatureMax = weeklyForcast[0]["temperatureMax"] as! Int
        dayZeroTemperatureMin = weeklyForcast[0]["temperatureMin"] as! Int

        //DAY ONE
        dayOneTemperatureMax = weeklyForcast[1]["temperatureMax"] as! Int
        dayOneTemperatureMin = weeklyForcast[1]["temperatureMin"] as! Int
        let dayOneTimeIntValue = weeklyForcast[1]["sunriseTime"] as! Int
        dayOneTime = weeekDateStringFromUnixtime(dayOneTimeIntValue)
        let dayOneIconString = weeklyForcast[1]["icon"] as! String
        dayOneIcon = weatherIconFromString(dayOneIconString)

      }

}
arrays json swift nsdictionary any
1个回答
0
投票

Swift不知道weeklyForcast[0]是什么类型的,所以你应该做以下事情:

if let zeroWeeklyForecast = weeklyForcast[0] as? [String: Int] {
    dayOneTemperatureMax = zeroWeeklyForecast["temperatureMax"]
    dayOneTemperatureMin = zeroWeeklyForecast["temperatureMin"]
}

如果weeklyForcast[0][String: Any]而不是[String: Int]你也必须从Any施放到Int

如评论中所述,NSDictionary不应再用于Swift,应替换为[Type1: Type2]。更重要的是,如果要从JSON解码数据,则应考虑使用JSONDecoderHere是一个很好的教程。

© www.soinside.com 2019 - 2024. All rights reserved.