Swift-數組

數組

數組使用有序列表存儲同一類型的多個值。相同的值可以多次出現在一個數組的不同位置中。

  • Swift中的Array類型被橋接到Foundation中的NSArray類。

數組的簡單語法

寫 Swift 數組應該遵循像Array這樣的形式,其中Element是這個數組中唯一允許存在的數據類型。我們也可以使用像[Element]這樣的簡單語法。儘管兩種形式在功能上是一樣的,但是推薦較短的那種

創建一個空數組

使用構造方法創建一個由特殊數據類型構成的空數組:

var intArray = [Int]()
//通過構造函數的類型, intArray的值類型被推斷爲[Int]

可以通過大括號將數組置空

//向數組中追加元素,此刻數組intArray中元素個數爲0
intArray.append(100)
//此時數組intArray中元素個數爲1  
intArray = []
//此刻intArray中數組爲空,但由於開始初始化數組intArray爲[Int]型的,雖然現在數組爲空,但其仍爲[Int]型數組。

創建一個數組(帶默認值)

var threeInts = [Int](count: 5, repeatedValue: 100)
print("threeInts is \(threeInts)")
//output: [100, 100, 100, 100, 100]

var threeIntsTwo = [100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
//Swift會根據數組中的元素自動推斷出數組的值類型 , 強制在數組中添加不同類型的元素顯然是不合法的

通過兩個數組相加創建一個數組

可以使用加法操作符(+)來組合兩種已存在的相同類型的數組,所得出的新數組的數據類型會從兩個相加的數組中推斷出來。

var arrayOne = Array(count: 3, repeatedValue: 10)
var arrayTwo = Array(count: 4, repeatedValue: 9)
var arrayAdd = arrayOne + arrayTwo
// arrayAdd : [10, 10, 10, 9, 9, 9, 9]  數據類型爲Int  
// 如果將兩個不同數據類型的數組相加  會報錯

用字面量構造數組

可以使用字面量進行數組構造,字面量是一系列由逗號分隔並由方括號包含的數值:

[value1, value2, value3, value4......]

創建一個goodList的並存儲String的數組:

var goodList : [String] = ["car", "toy"]
//goodList已經被構造並且擁有兩個初始項

goodList變量被聲明爲“字符串值類型的數組”,記作[String].因爲這個數組被規定只有String一種數據結構,所以其中只能存儲String類型。由Swift的推斷機制,當用”car”和”toy”來初始化數組時,數組就被自動匹配成爲字符串值類型的數組。所以,goodList數組也可以寫成下面的形式,其結果和上面的一樣:

var goodList = ["car", "toy"]

因爲所有字面量中的值都是相同的類型,Swift可以推斷出[String]是goodList中變量的正確類型。

訪問和修改數組

  • 獲取數組元素的個數
var count = goodList.count
  • 檢測數組是否爲空
if goodList.isEmpty{
    print("The goodList is empty.")
}else{
    print("The goodList is not empty.")
}
  • 追加元素
goodList.append("pen")
  • 使用加法賦值運算符(+=)可以直接在數組後面添加一個或多個擁有相同類型的數據項
goodList += ["ink", "ice"]
  • 直接使用下標語法來獲取數組中的數據項。
var firstItem = goodList[0]
  • 通過下標修改已有索引值對應的數據值
goodList[2] = "pencil"
  • 可以通過下標改變一系列的數據值,即使新數據和原有數據的數量是不一樣的
//將goodList數組第一和第二個元素替換成“apple”   兩個換成一個  後面的一次向前移動
goodList[1...2] = ["apple"];
//Tips:不可在數組的末尾執行此項操作
  • 插入元素
goodList.insert("orange", atIndex: 0)
  • 移除元素,在指定的位置
let temp = goodList.removeAtIndex(0)
//直接移除最後一項
let temp1 = goodList.removeLast()
  • 排序
goodList.sort { (let str1, let str2) -> Bool in
    return str1 < str2
}
goodList.sortInPlace { (let str1, let str2) -> Bool in
    return str1 < str2
}

數組的遍歷

  • 使用for-in循環來遍歷所有數組中的數據項
for item in goodList{
    print(item)
}
  • 如果同時需要使用每個數據項和索引值,可以使用enumerate()方法來進行數組遍歷。enumerate()返回一個由每一個數據項索引值和數據值組成的元組。可以把這個元組分解成爲臨時常量或者變量進行遍歷。
for (index, value) in goodList.enumerate(){
    print("item --> \(item) , value --> \(value)")
}
發佈了37 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章