數(shù)組使用有序列表存儲(chǔ)同一類型的多個(gè)值。相同的值可以多次出現(xiàn)在一個(gè)數(shù)組的不同位置中。
Swift 數(shù)組特定于它所存儲(chǔ)元素的類型。這與 Objective-C 的 NSArray 和 NSMutableArray 不同,這兩個(gè)類可以存儲(chǔ)任意類型的對(duì)象,并且不提供所返回對(duì)象的任何特別信息。在 Swift 中,數(shù)據(jù)值在被存儲(chǔ)進(jìn)入某個(gè)數(shù)組之前類型必須明確,方法是通過(guò)顯式的類型標(biāo)注或類型推斷,而且不是必須是class類型。例如: 如果我們創(chuàng)建了一個(gè)Int值類型的數(shù)組,我們不能往其中插入任何不是Int類型的數(shù)據(jù)。 Swift 中的數(shù)組是類型安全的,并且它們中包含的類型必須明確。
寫 Swift 數(shù)組應(yīng)該遵循像Array<SomeType>這樣的形式,其中SomeType是這個(gè)數(shù)組中唯一允許存在的數(shù)據(jù)類型。 我們也可以使用像SomeType[]這樣的簡(jiǎn)單語(yǔ)法。 盡管兩種形式在功能上是一樣的,但是推薦較短的那種,而且在本文中都會(huì)使用這種形式來(lái)使用數(shù)組。
我們可以使用字面量來(lái)進(jìn)行數(shù)組構(gòu)造,這是一種用一個(gè)或者多個(gè)數(shù)值構(gòu)造數(shù)組的簡(jiǎn)單方法。字面量是一系列由逗號(hào)分割并由方括號(hào)包含的數(shù)值。 [value 1, value 2, value 3]。
下面這個(gè)例子創(chuàng)建了一個(gè)叫做shoppingList并且存儲(chǔ)字符串的數(shù)組:
var shoppingList: String[] = ["Eggs", "Milk"]
// shoppingList 已經(jīng)被構(gòu)造并且擁有兩個(gè)初始項(xiàng)。
shoppingList變量被聲明為“字符串值類型的數(shù)組“,記作String[]。 因?yàn)檫@個(gè)數(shù)組被規(guī)定只有String一種數(shù)據(jù)結(jié)構(gòu),所以只有String類型可以在其中被存取。 在這里,shoppinglist數(shù)組由兩個(gè)String值("Eggs" 和"Milk")構(gòu)造,并且由字面量定義。
注意:
Shoppinglist數(shù)組被聲明為變量(var關(guān)鍵字創(chuàng)建)而不是常量(let創(chuàng)建)是因?yàn)橐院罂赡軙?huì)有更多的數(shù)據(jù)項(xiàng)被插入其中。
在這個(gè)例子中,字面量?jī)H僅包含兩個(gè)String值。匹配了該數(shù)組的變量聲明(只能包含String的數(shù)組),所以這個(gè)字面量的分配過(guò)程就是允許用兩個(gè)初始項(xiàng)來(lái)構(gòu)造shoppinglist。
由于 Swift 的類型推斷機(jī)制,當(dāng)我們用字面量構(gòu)造只擁有相同類型值數(shù)組的時(shí)候,我們不必把數(shù)組的類型定義清楚。shoppinglist的構(gòu)造也可以這樣寫:
var shoppingList = ["Eggs", "Milk"]
因?yàn)樗凶置媪恐械闹刀际窍嗤念愋?,Swift 可以推斷出String[]是shoppinglist中變量的正確類型。
我們可以通過(guò)數(shù)組的方法和屬性來(lái)訪問(wèn)和修改數(shù)組,或者下標(biāo)語(yǔ)法。 還可以使用數(shù)組的只讀屬性count來(lái)獲取數(shù)組中的數(shù)據(jù)項(xiàng)數(shù)量。
println("The shopping list contains \(shoppingList.count) items.")
// 輸出"The shopping list contains 2 items."(這個(gè)數(shù)組有2個(gè)項(xiàng))
使用布爾項(xiàng)isEmpty來(lái)作為檢查count屬性的值是否為 0 的捷徑。
if shoppingList.isEmpty {
println("The shopping list is empty.")
} else {
println("The shopping list is not empty.")
}
// 打印 "The shopping list is not empty."(shoppinglist不是空的)
也可以使用append方法在數(shù)組后面添加新的數(shù)據(jù)項(xiàng):
shoppingList.append("Flour")
// shoppingList 現(xiàn)在有3個(gè)數(shù)據(jù)項(xiàng),有人在攤煎餅
除此之外,使用加法賦值運(yùn)算符(+=)也可以直接在數(shù)組后面添加數(shù)據(jù)項(xiàng):
shoppingList += "Baking Powder"
// shoppingList 現(xiàn)在有四項(xiàng)了
我們也可以使用加法賦值運(yùn)算符(+=)直接添加擁有相同類型數(shù)據(jù)的數(shù)組。
shoppingList += ["Chocolate Spread", "Cheese", "Butter"]
// shoppingList 現(xiàn)在有7項(xiàng)了
可以直接使用下標(biāo)語(yǔ)法來(lái)獲取數(shù)組中的數(shù)據(jù)項(xiàng),把我們需要的數(shù)據(jù)項(xiàng)的索引值放在直接放在數(shù)組名稱的方括號(hào)中:
上一篇:Swift為可選鏈定義模型類下一篇:Swift類型約束