2016-07-04 59 views
1

這是JSON爲什麼按索引訪問這個json子元素引發這個錯誤?

 "feature_id" = (
      3047, 
      3084, 
      3095, 
      3100, 
      3121, 
      3124, 
      3182, 
      3272, 
      3273, 
      3274 
     ); 

的一部分,這是我如何訪問JSON,我用Alamofire。

var features_id = self.jsonD["results"]!["place_basic_info"]!!["feature_id"]!! 

現在的問題是在這裏

features_id[0] as? String 

引發的錯誤是:

曖昧使用 '標' 的

奇怪的是這表明了當我嘗試爲設備構建而不是運行時,如何解決這個問題?爲什麼它出現?

+1

你必須給正確的類型編譯器。像'if let ... = features_id as?例如[Int] {...}。現在編譯器不知道'features_id'是一個數組。 – Moritz

+0

你可以發佈這個答案。 – DeyaEldeen

+1

@DeyaEldeen邊注:您應該考慮命名數組變量的複數名稱(如「feature_ids」)。 – Alexander

回答

1

曖昧使用「標」

的問題是,編譯器不知道features_id是一個數組,所以它是無法通過索引下標了。

你必須給該對象的類型,編譯器,例如帶有可選的裝訂和鑄造:

if let featID = features_id as? [Int] { 
    // here featID is features_id unwrapped as an array of Ints 
} 
+1

你甚至可以使用變量陰影:'if let features_id = features_id as? [Int] ...' – Alexander

+0

是的,絕對。好點子。 – Moritz

+0

我喜歡這個功能。我討厭爲了避免名稱衝突而提出任意小名稱更改。 – Alexander

相關問題