2016-10-26 77 views
0

我試圖將我的項目更新爲swift 3.0,並且關於從服務器拉數據的所有代碼在下面的圖片中都給出了此錯誤。在從服務器拉數據的過程中,類型「Any」在Swift 3中沒有下標成員

enter image description here

我嘗試了很多解決方案,那就是可以在這裏找到,但沒有有用的結果,是什麼在這種情況下,這個問題?

do { 
     let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) 


     if let countries = json["Countries"] as? [String: AnyObject] { 
      for country in countries { 
       if let couname = country["countryname"] as? [AnyObject] { 
        country_names.append(couname) 
       } 

       if let coucode = country["code"] as? [AnyObject] { 
        country_codes.append(coucode) 
       } 

      } 
     } 
    } catch { 
     print("Error Serializing JSON: \(error)") 
    } 

回答

1

嘗試使用它之前鑄造json[String: Any]

而且你似乎這裏有一個錯誤:if let couname = country["countryname"] as? [AnyObject]

你應該把它轉換爲的[String: AnyObject]數組:[[String: AnyObject]]

調整後的代碼看起來像:

do { 
    let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as! [String: Any] 

    if let countries = json["Countries"] as? [[String: AnyObject]] { 
     for country in countries { 
      if let couname = country["countryname"] as? [AnyObject] { 
       country_names.append(couname) 
      } 

      if let coucode = country["code"] as? [AnyObject] { 
       country_codes.append(coucode) 
      } 

     } 
    } 
} catch { 
    print("Error Serializing JSON: \(error)") 
} 
0

使用它而不是僅僅使用let json

guard let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String:AnyObject] else { return } 
+0

我想這條線但現在錯誤出現在兩條if語句的以下行中 類型'(key:String,value:AnyObject)'沒有下標成員 –

相關問題