可选类型'NSDictionary ??'的值没有打开

时间:2017-02-17 04:46:23

标签: ios

我一直在关注一个正在使用API​​的教程,特别是openweathermap api,我遇到了一个问题,xCode给了我选项“修复它!和??”,遗憾的是它没有修复问题。

if let urlContent = data {
                do {
                let jsonResult = try JSONSerialization.jsonObject(with: urlContent, options: JSONSerialization.ReadingOptions.mutableContainers) as? [String: Any]
                print(jsonResult)
                print(jsonResult?["name"])  
                    if let description = ((jsonResult?["weather"] as? NSArray)?[0] as? NSDictionary)?["description"] as? String {
                        print(description) 
                    } 
                } catch {      
                    print("JSON Processing Fail")                        
                }

我在if let description = ((jsonResult?["weather"] as? NSArray)?[0] as? NSDictionary)?["description"] as? String上收到错误,作为可选类型'NSDictionary ??'的值没有解开错误。

1 个答案:

答案 0 :(得分:1)

只需使用Swift的原生类型Array而不是NSArray。

do {
   if let jsonResult = try JSONSerialization.jsonObject(with: urlContent, options: []) as? [String: Any] {   
       if let weatherArray = jsonResult["weather"] as? [[String:Any]],
          let dic = weatherArray.first, let description = dic["description"] as? String {
            print(description) 
        } 
   }

} catch {      
    print("JSON Processing Fail")                        
}