如何将下标成员转换为 NSArray Swift 3
Posted
技术标签:
【中文标题】如何将下标成员转换为 NSArray Swift 3【英文标题】:How to cast a subscript member to NSArray Swift 3 【发布时间】:2016-10-24 05:39:11 【问题描述】:返回错误消息:类型‘Any’在最后两行代码中没有下标成员。我无法在 Swift 3 中为 NSArray 解决这个问题:有什么想法吗?
let weatherDictionary: NSDictionary = (try! JSONSerialization.jsonObject(with: dataObject!, options: [])) as! NSDictionary
_ = try JSONSerialization.jsonObject(with: dataObject!, options: .allowFragments) as! [String:Any]
然后
struct Weekly
var dayZeroTemperatureMax: Int
var dayZeroTemperatureMin: Int
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
【问题讨论】:
让weatherDictionary: NSDictionary = (try! JSONSerialization.jsonObject(with: dataObject!, options: [])) as! NSDictionary 让weeklyWeather = Weekly(weatherDictionary: weatherDictionary) !! json.org/example.html 请在此处查看。希望你明白什么是 JSON! 尝试使用 SWIFT 数组,而不是“让 weekForcast = weekWeather["data"] as!NSArray”。我的意思不是类型转换为 NSArray,而是类型转换为 [Int]。我假设您只包含 Int 值。否则,SWIFT 将推断其为 [Any] 类型。 【参考方案1】:尝试将您的代码更改为:
let weeklyWeather = weatherDictionary["daily"] as! [String: AnyObject]
let weeklyForcast = weeklyWeather["data"] as! [[String: Any]]
在同一个项目中,您可能也需要更改它(在 WeatherAlerts 中):
init (weatherDictionary: [String: Any])
if let weatheralerts = (weatherDictionary["alerts"] as? [[String: Any]])
userAlert = weatheralerts[0]["title"] as! String
else
userAlert = ""
我真的不知道改变这个的原因,如果有人有解释请在这里评论。
但在同一个project 中,我有一个“致命错误:在展开可选值时意外发现 nil”错误here,你知道吗? URLSessionDownloadTask 有什么变化?
【讨论】:
非常感谢!那效果很好。我也没有解释,但它有效!以上是关于如何将下标成员转换为 NSArray Swift 3的主要内容,如果未能解决你的问题,请参考以下文章