免费开源的iOS开发学习平台

Swift: 5.3 集合类型-字典

字典类型就是存储一组相关联的键值对(key-value),key的值是唯一的。字典中的键值对是无序的。

  • 字典类型使用 Dictionary<Key, Value>进行初始化,如果上下文中Key,Value的类型可以推断出来,也可以简写成[:]。字典类型可以通过下标进行赋值,如果下标值不存在,则插入,否则就是更新值。不过字典类型中,还提供了updateValue(_:forKey:)函数来更新值,该函数有返回值,如果被更新的Key已经存在,则返回旧值,如果不存在则返回nil。可以通过给赋值nil来删除字典中的某个键值对。也可以通过removeValue(forKey:)函数来删除某个键值对,同样的,这个函数也有返回值,如果删除成功,就返回被删除的值,如果失败就返回nil。字典类型的循环遍历跟数组也类似,循环的每个项是个(key,value)的元组。
//初始化
var intStringDic = [Int:String]()
intStringDic = [:]
var fruits = ["Apple":"苹果","Juice":"橘子","Bananas":"香蕉"]

//插入和删除
intStringDic[10] = "Ten"
fruits["Orange"] = "橙色的"
fruits["Orange"] = "橙子"
fruits["Orange"] = nil

//使用函数进行更新和删除
if let oldValue = fruits.updateValue("APP", forKey: "Apple") {
    print("更新前的值是: \(oldValue).")
}
if let removedValue = fruits.removeValue(forKey: "Orange") {
    print("删除前的值是: \(removedValue).")
} else {
    print("fruits字典里面没有Orange这个键值")
}

//循环遍历
for (itemKey, itemValue) in fruits {
    print("\(itemKey): \(itemValue)")
}

//字典类型的keys和values属性返回字典的键值的无序集合,可以转为数组
let keys = [String](fruits.keys)
let values = [String](fruits.values)

示例代码运行结果如下图。

示例代码

https://github.com/99ios/23.5.3