2014-11-02 33 views
5

剛剛學習Swift,來自PHP。我試圖弄清楚你是否可以在Swift中嵌套深度數組。下面是什麼我談論的是一個PHP例子:Swift中可能存在多維字典?

$myArray = array(

"motorcycles" => array ("Honda", "Ducati", "Yamaha"), 
"cars" => array(
       "sedans" => array("Jetta", "Taurus", "Impala"), 
       "sport" => array("Porsche", "Ferarri", "Corvette"), 
       "trucks" => array (
           "shortbed" => array("Ford F150", "Dodge Ram 1500"), 
           "longbed" => array(
                "standardCab" => array("Ford F350", "Dodge Ram 2500"), 
                "crewCab" => array("Ford F350", "Dodge Ram 2500") 
                ) 
          ) 
      ) 

); 

回答

6

是,在斯威夫特這將是:從這樣的結構

let myArray = [ 
    "motorcycles": ["Honda", "Ducati", "Yamaha"], 
    "cars": [ 
     "sedans": ["Jetta", "Taurus", "Impala"], 
     "sport" : ["Porsche", "Ferarri", "Corvette"], 
     "trucks" : [ 
      "shortbed" : ["Ford F150", "Dodge Ram 1500"], 
      "longbed" : [ 
       "standardCab":["Ford F350", "Dodge Ram 2500"], 
       "crewCab":["Ford F350", "Dodge Ram 2500"] 
      ] 
     ] 
    ] 
] 

讀值可能會有點困難,雖然,因爲雨燕難以辨別類型。爲了得到standardCab車,你可以這樣做:

if let trucks = myArray["cars"]?["trucks"] as? [String:AnyObject] { 
    if let standardCab = trucks["longbed"]?["standardCab"] as? [String] { 
     println(standardCab) 
    } 
} 
+0

謝謝,但是當我用你的例子中,我得到一個錯誤:「遊樂場執行失敗」。似乎它應該可以工作,但是,基於我在網上找到的例子。 – 2014-11-02 04:07:59

+0

它適用於我的Xcode 6.1。你正在運行哪個版本的Xcode?嘗試向'myArray'中添加一個類型來幫助編譯器:'let myArray:[String:AnyObject] = [' – vacawama 2014-11-02 09:54:29

+0

啊,就是這樣。顯然,我的6.1版本有一個bug。我抓住了最新的版本,它的工作原理。謝謝! – 2014-11-02 15:26:20