2016-11-24 82 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