iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
自我挑戰組

初入Swift新手村的旅程系列 第 9

Day09 Swift語法( 8 ) 字典

  • 分享至 

  • xImage
  •  

字典

字典是一種無順序的集合,在宣告時,也都必須明確宣告類型,字典中的一個元素,是由一個 key跟一個value所組成的。

Dictionary<KeyType, ValueType>

宣告字典

var dic1:[Int:String]
// 這種結構用來表示字典類型,前面的為key後面的為value

另外一種宣告方式

var dic2:Dictionary<Int,String>
// 與上面的宣告方式,是一樣的效果

字典創建與賦值

dic1 = [1:"1",2:"2",3:"3"]
dic2 = Dictionary(dictionaryLiteral: (1,"1"),(2,"2"),(3,"3"))

字典型別推斷

var dic3 = ["1": "one"]

空字典

var dic4: [Int:Int] = [:]
var dic5:Dictionary<Int,Int> = Dictionary()

字典中的元素個數

dic1.count
// print出來是 3

判斷字典是否為空

if dic4.isEmpty {
    print("Empty")
}
// 印出Empty

透過具體key的方式可以獲得或是修改對應的value

dic1[2]
// 獲得值
dic1[1] = "0"
// 修改值
dic1[4] = "4"
// 添加新的值

上面的程式,dic1[1] = “0”與dic1[4] = "4" 是完成了相同的操作,簡單理解就是原本有的可以進行修改,原本沒有的則為添加一個新的進去。

對key value進行更新

dic1.updateValue("1", forKey: 1)

updateValue(value, forKey: )這個方法用來更新一個已經存在的值,前面第一個參數為新值,後面的則是要進行修改的值,用這個方法時會return一個 Optional 可選類型的值,假設字典中有這個值就會進行修改return一個可選類型,假設沒有這個值則會返回nil,在開發中可以利用 if let 來進行判斷。

if let oldValue = dic1.updateValue("One", forKey: 1) {
    print("Old Value (oldValue)")
}
// 印出Old Value 1
if let value = dic2[1] {
    print("The Value is (value)")
}
// 印出 The Value is 1

刪除

dic1.removeValue(forKey: 1)

全部刪除

dic1.removeAll()

遍歷

  • 透過key來進行遍歷
for item in dic2.keys {
    print(item)
}
  • 透過value來進行遍歷
for item in dic2.values {
    print(item)
}
  • 直接遍歷
for item in dic2 {
    print(item)
}
for (key, value) in dic2 {
    print("(key), (value)")
}
  • 排序遍歷
for item in dic2.keys.sorted(by: >) {
    print(dic2[item]!)
}

接下來,是Loops的介紹


上一篇
Day08 Swift語法( 7 ) 集合Set
下一篇
Day10 Swift語法( 9 ) Loops
系列文
初入Swift新手村的旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言