2015-09-22 99 views
1

是否有可能擁有多個數據類型的多維數組。不同類型的Swift 2D陣列

實例(我希望最後一個項目是一個智力):

var london = [[String]]() 

london[0] = ["England", "Chelmsford", 49] 
london[1] = ["Wales", "Cardiff", 212] 
london[2] = ["Scotland", "Glasgow", 556] 
london[3] = ["Germany", "Frankfurt", 640] 

回答

6

我認爲你是用structDictionary數組更好:

struct CityInfo { 
    var country : String 
    var city : String 
    var data : Int 
} 

var london = [CityInfo]() 
london.append(CityInfo(country: "England", city: "Chelmsford", data: 49)) 
london.append(CityInfo(country: "Wales", city: "Cardiff", data: 212)) 
london.append(CityInfo(country: "Scotland", city: "Glasgow", data: 556)) 
london.append(CityInfo(country: "Germany", city: "Frankfurt", data: 640)) 

但是你可以使用二維數組,如果你想:

var london = [[Any]]()  
london.append(["England", "Chelmsford", 49]) 
london.append(["Wales", "Cardiff", 212]) 
london.append(["Scotland", "Glasgow", 556]) 
london.append(["Germany", "Frankfurt", 640]) 
+0

對不起,我的Swift無知,但什麼是使用結構方法的好處嗎? – ManicMorFF

+0

您已標記並強制鍵入數據。對於二維數組,每個數組的最後一個元素是「Int」的知識是隱含的。您必須記住每次使用的位置和數據類型。 –

0

你該陣列中使用數組與2的一個選項

要麼使之包含國家一類或結構/城市/整數作爲屬性

使用元組 typealias myData的=(國家:字符串,城市:字符串,mynumber的:整數)

什麼用處取決於你會用它做什麼在你的代碼

0

如果你真的想它怎麼樣你,只需要使用AnyObject作爲類型

var london = [[AnyObject]]() 

    london.append(["England", "Chelmsford", 49]) 
    london.append(["Wales", "Cardiff", 212]) 
    london.append(["Scotland", "Glasgow", 556]) 
    london.append(["Germany", "Frankfurt", 640]) 
+0

你的代碼會崩潰,原因有兩個:(1)索引超出限制,(2)'Int'不是一個對象。 –

+0

好抓,但是Int是一個對象 –