iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0
Mobile Development

Swift iOS 開發新手村:從入門到 AI 聊天室系列 第 6

Day 6|Swift 陣列全攻略:有序資料的必備管理術!

  • 分享至 

  • xImage
  •  

昨天,我們深入探索了 字串(String),並了解到它的本質其實就是一個有序的「字元」集合。

這個「集合」的概念非常強大。但如果我們想存放的不是單一字元,而是一整個字串清單(例如所有待辦事項),或是一連串的數字(例如所有考試分數)呢?

這就是今天的主角—— 陣列(Array) 登場的時刻!陣列是 Swift 中最靈活、也最重要的集合型別,它讓我們能將任何同類型的資料整齊地收納在一個有序的容器中。準備好將你的資料管理能力提升到下一個層次吧!呀哈哈

今日學習重點

  • 建立陣列:學習宣告、初始化、帶值與合併
  • 元素操作:透過索引讀取、修改與範圍替換
  • 陣列管理:活用方法來新增、插入與刪除元素
  • 狀態檢查:學會遍歷所有元素與檢查數量

宣告與創建陣列

var numbers: [Int]       // 推薦簡潔寫法
var scores: Array<Int>   // 另一寫法,功能相同

建立空陣列

var nums = [Int]()
print(nums)       // 印出 []

nums.append(100)
print(nums)       // 印出 [100]

nums = []
print(nums)       // 印出 []

var words: [String] = []
print(words)      // 印出 []

創建帶預設值的陣列

var threeZeros = Array(repeating: 0, count: 3)
print(threeZeros) // 印出 [0, 0, 0]

合併陣列

var partA = [1, 2, 3]
var partB = [4, 5, 6]
var combinedArray = partA + partB
print(combinedArray) // 印出 [1, 2, 3, 4, 5, 6]

直接帶值創建(陣列字面量)

var shoppingList: [String] = ["Eggs", "Milk"]
var anotherList = ["Rice", "Apples"]

存取與修改

var groceryItems = ["Apples", "Eggs", "Milk", "Rice", "Water"]
print(groceryItems[2])       // 印出 Milk

groceryItems[2] = "Oranges"
print(groceryItems[2])       // 印出 Oranges

groceryItems[1...4] = ["Banana", "Cheese"]
print(groceryItems)          // 印出 ["Apples", "Banana", "Cheese"]

注意:小心索引超出範圍 (Index out of range)
陣列的索引是從 0 開始的。如果你試圖存取一個不存在的索引,例如一個只有 3 個元素的陣列,你卻想讀取 array[3],你的 App 就會立刻閃退!

var letters = ["A", "B", "C"] // 索引是 0, 1, 2
// print(letters[3]) // 這行會導致閃退!因為索引 3 超出範圍了

這是使用陣列時最需要小心的陷阱。在存取特定索引前,最好先用 .count 屬性確保該索引是有效的

常用屬性

  • .count: 返回陣列中值的數量(非負整數)。
  • .isEmpty: 檢查陣列是否為空(返回布林值)。
var items = ["Keyboard", "Mouse", "Monitor"]
print("陣列中有 \(items.count) 個項目")  // 陣列中有 3 個項目

items = []
print(items.isEmpty)          // 印出 true

新增或移除元素

  • append(_:):在陣列末尾加入新值。
  • insert(_:at:):在指定索引插入新值,後續元素自動後移。
  • remove(at:):移除指定索引的元素,後續元素自動前移。
  • removeLast():移除陣列最後一個元素。
var todoList = ["寫程式", "運動"]

todoList.append("煮飯")  // 加入新的值
todoList.insert("打掃", at: 0)  // 在索引 0 加入新的值 

let removedItem = todoList.remove(at: 1)
print("移除了:\(removedItem)")  // 移除了:寫程式

let lastItem = todoList.removeLast()
print("最後一個被移除的項目是:\(lastItem)") // 最後一個被移除的項目是:煮飯

遍歷陣列

var students = ["Alice", "Bob", "Charlie", "David"]

for student in students {
    print(student)
}
/* 輸出:
Alice
Bob
Charlie
David
*/

for (index, student) in students.enumerated() {
    print("學生 \(index + 1): \(student)")
}
/* 輸出:
學生 1: Alice
學生 2: Bob
學生 3: Charlie
學生 4: David
*/

小結一下

今天,你掌握了 Swift 中管理多筆資料的第一個核心工具:陣列(Array)

你現在不僅知道如何建立一個有序的資料清單,更學會了如何像專家一樣隨心所欲地操作它——透過索引精準地存取與修改,並活用 appendremove 動態增刪項目。搭配 for-in 迴圈,你已經能有效管理任何有序的資料序列。

這是你踏入 Swift 資料結構世界的第一步,有了這個穩固的基礎,我們明天將探索更多樣的資料管理技巧!

🌟 明天預告

陣列幫我們管理「有序」的清單,但如果我們只關心「有沒有」,而不在乎順序,甚至想自動過濾掉重複的項目呢?

明天,我們將認識 Swift 的另一個集合利器:集合(Set)!它不僅能高效處理唯一元素,更內建了強大的「數學超能力」。你將學會如何找出兩組資料的交集(共同點)、聯集(合併去重),甚至判斷它們的子集合關係。想知道如何輕鬆找出兩份名單的共同好友嗎?明天你就會學到!

敬請期待《Day 7|Swift:去重首選,Set 搞定!》


上一篇
Day 5|Swift 字串進階指南:多行文字、字元遍歷與實用方法!
系列文
Swift iOS 開發新手村:從入門到 AI 聊天室6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言