2014-11-02 10 views
5

Basta imparare Swift, proveniente da PHP. Sto cercando di capire se puoi creare array profondamente annidati in Swift. Ecco un esempio PHP di cosa sto parlando:Dizionari multidimensionali possibili in 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") 
                ) 
          ) 
      ) 

); 

risposta

6

Sì, a Swift che sarebbe:

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"] 
      ] 
     ] 
    ] 
] 

Lettura di valori da una tale struttura può essere un po 'difficile, però, dal momento che Swift ha difficoltà a discernere i tipi. Per ottenere i standardCab veicoli, si può fare:

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

Grazie, ma ho un errore quando uso il tuo esempio: "l'esecuzione Playground non riuscita". Sembra che dovrebbe funzionare, però, sulla base degli esempi che sono stato in grado di trovare online. –

+0

Ha funzionato per me con Xcode 6.1. Quale versione di Xcode stai usando? Prova ad aggiungere un tipo a 'myArray' per aiutare il compilatore:' lascia myArray: [String: AnyObject] = [' – vacawama

+0

Ah, era così. Apparentemente la mia versione di 6.1 aveva un bug. Ho preso l'ultima build e funziona. Grazie! –

Problemi correlati