类型 'Any' 没有下标成员错误 Json



我收到此错误

类型"任何"没有下标成员

在带有"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)
}
}

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 解码数据,则应考虑使用JSONDecoder。这是一个很好的教程。

最新更新