2016-11-24 83 views
-1

我在手机上部署应用程序时出现“模糊使用下标”错误。部署时出现“模糊使用下标”错误 - Swift 3

我有以下格式的JSON响应:

[ 
    { 
     "title":"G1", 
     … 
    }, 
    { 
     "title":"G2”, 
     … 
    } 
] 

这是我的代码:

let task = URLSession.shared.dataTask(with: url) { (data, response, error) in // URLSession.shared().dataTask(with: url) { (data, response, error) is now URLSession.shared.dataTask(with: url) { (data, response, error) 

     if error != nil { 

      print(error) 

     } else { 

      if let urlContent = data { 

       do { 

        let jsonResult = try JSONSerialization.jsonObject(with: urlContent, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject 


        for index in 0...jsonResult.count-1 { 

         if let item = jsonResult[index] as? [String: AnyObject] { 
          if let loc = item["title"] as? String { 
           self.locArr.append(loc) 
          } 
         } 
        } 
        DispatchQueue.main.async { 
         self.tableView.reloadData() 
        } 

       } catch { 

        print("JSON Processing Failed") 
       } 
      } 
     } 
    } 

    task.resume() 

我的错误是在下面的行来:

if let item = jsonResult[index] as? [String: AnyObject] { 

请有人帮助我,因为我第一次与json合作。我不确定我的代码结构是否支持上述json模式。任何帮助将不胜感激。

+1

'让jsonResult =尝试......作为AnyObject' => jsonResult被视为AnyObject,不支持下标。因此,首先将jsonResult强制转换为'[[String:AnyObject]]。 – luk2302

回答

0
let jsonResult = try JSONSerialization.jsonObject(with: urlContent, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject 

你应该投你jsonResult作为AnyObject

数组
guard let jsonResult = try JSONSerialization.jsonObject(with: urlContent, options: JSONSerialization.ReadingOptions.mutableContainers) as? [AnyObject] else { 
    return 
} 
+0

非常感谢!这工作就像一个魅力:)从现在2个小时,我被困在这个。 – Dia