Swift字典每個值(value)都關聯唯壹的鍵(key),鍵作為字典中的這個值數據的標識符。
和數組中的數據項不同,字典中的數據項並沒有具體順序。我們在需要通過標識符(鍵)訪問數據的時候使用字典,這種方法很大程度上和我們在現實世界中使用字典查字義的方法壹樣。
Swift字典的key沒有類型限制可以是整型或字符串,但必須是唯壹的。
如果創建壹個字典,並賦值給壹個變量,則創建的字典就是可以修改的。這意味著在創建字典後,可以通過添加、刪除、修改的方式改變字典裏的項目。如果將壹個字典賦值給常量,字典就不可修改,並且字典的大小和內容都不可以修改。
[objc] view plain copy
在CODE上查看代碼片派生到我的代碼片
// 創建字典
// 創建壹個特定類型的空字典,格式為:var dict = [KeyType: ValueType]()
// 創建壹個空字典,鍵的類型為 Int,值的類型為 String 的簡單語法:
var dict01 = [Int: String]()
print(dict01)
// 創建壹個字典的實例:
var dict02 :[Int:String] = [1:"One", 2:"Two", 3:"Three"]
print(dict02)
var dict03 = ["name":"DevZhang", "job":"iOSDev", "company":"VSTECS"]
print(dict03)
[objc] view plain copy
在CODE上查看代碼片派生到我的代碼片
// 訪問字典
// 我們可以根據字典的索引來訪問數組的元素,語法如下:var value = dict[key]
let value01 = dict02[1]
print(value01)
let value02 = dict03["name"]
print(value02)
[objc] view plain copy
在CODE上查看代碼片派生到我的代碼片
// 添加數據
let value03 = dict02.updateValue("Four", forKey: 4) //或 dict02[4] = "Four"
print(value03)
print(dict02)
[objc] view plain copy
在CODE上查看代碼片派生到我的代碼片
// 修改字典
// 方法1 使用 updateValue(forKey:) 增加或更新字典的內容。如果 key 不存在,則添加值,如果存在則修改 key 對應的值。格式為:dict.updateValue(value, forKey:key)方法返回Optional值。
var value04 = dict02.updateValue("TwoTmp", forKey: 2)
print(dict02)
print(value04)
// 方法2 通過指定的 key 來修改字典的值
var value05 = dict02[3]
print(value05)
value05 = "ThreeTmp" // 修改無效
print(dict02)
dict02[3] = "ThreeTmp" // 修改有效
print(dict02)
[objc] view plain copy
在CODE上查看代碼片派生到我的代碼片
// 移除 Key-Value 對
// 1 使用 removeValueForKey() 方法來移除字典 key-value 對。如果 key 存在該方法返回移除的值,如果不存在返回 nil 。
let valueRemove01 = dict02.removeValueForKey(2)
print(valueRemove01)
print(dict02)
// 2 通過指定鍵的值為 nil 來移除 key-value(鍵-值)對。
dict02[1] = nil
print(dict02)
[objc] view plain copy
在CODE上查看代碼片派生到我的代碼片
// 遍歷字典
// 1 使用 for-in 循環來遍歷某個字典中的鍵值對。
for (key, value) in dict03
{
print("字典 key \(key) - 字典 value \(value)")
}
// 2 使用enumerate()方法來進行字典遍歷,返回的是字典的索引及 (key, value) 對
for (key, value) in dict03.enumerate()
{
print("字典 key \(key) - 字典 (key, value) 對 \(value)")
}
// 3
for key in dict03.keys
{
let value = dict03[key]
print("key = \(key), value = \(value)")
}
[objc] view plain copy
在CODE上查看代碼片派生到我的代碼片
// 字典轉換為數組
// 提取字典的鍵值(key-value)對,並轉換為獨立的數組。
let dictKeys = [String](dict03.keys)
for (key) in dictKeys
{
print("\(key)")
}
let dictValues = [String](dict03.values)
for (value) in dictValues
{
print("\(value)")
}
[objc] view plain copy
在CODE上查看代碼片派生到我的代碼片
// count 屬性
let count01 = dict03.count
print(count01)
[objc] view plain copy
在CODE上查看代碼片派生到我的代碼片
// isEmpty 屬性
let empty01 = dict01.isEmpty
print("dict01 is \(empty01)")
let empty02 = dict03.isEmpty
print("dict03 is \(empty02)")