2015-09-22 53 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是一个对象 –