2014-11-02 75 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