key它必须是可哈希的,也就是说,它必须能够提供一个方式让自己被唯一表示出来。Swift的所有基础类型(例如String、Int、Double和Bool)默认都是可哈希的,这些类型都能够用作字典中的键。枚举成员中没有绑定值的值(参见枚举)默认也是可哈希的。 而值可以是NSobjcet的类型
不可变字典 let
let dictA = ["key1":"value1","key2":"value2","key3":4] print(dictA["key3"])
可变字典 var 字典的键值对的类型 是根据初始化时候的类型来决定的,类型是后面无法改变的
可以存放任意类型的字典 比如 键值对(key:value) 可以是数组
let array = [1,2,3,4,5] var dictB = [1:"value1","2":"value2","key3":"value3","key4":array]
获取dictB 对应的所有的key
for key in dictB.keyEnumerator() { print(key) } print("dictB==\(dictB)")
swift的 Dictionary 类型的字典 存放 一些基本 类型的键值对
var dictM:Dictionary = ["1":"value1","2":"value2","key3":"value3","key4":"4"]
获取字典元素个数
dictM.count
将一个键值对插入字典中
dictM["key6"] = "5"
修改字典中某一个key对应的value值
dictM["1"] = "change"
更新字典的键值对.如果存在相同的键,那么就更新对应的值!如果不存在,就将新的键值对放入字典
updateValue(forKey:)函数返回一个值的类型的可选值。例如一个值类型为String的字典,该函数返回值的类型为String?。如果更新前该键的值存在,函数返回值就是该键更新前的值,如果不存在,函数返回值就是nil: 这让你能够检测是否发生了值的更新。
let oldValue = dictM.updateValue("9", forKey: "1")
因为key"1" 之前存在,所以 oldVaue 的值就为更新前的值
if oldValue == nil {
print("oldValue--不存在-->\(oldValue)")
}else{
print("oldValue--存在-->\(oldValue)")
}
打印结果
oldValue--存在-->Optional("change")
因为key"new" 之前不存在,所以 newvalue 为 nil
if newValue == nil {
print("newValue==不存在===\(newValue)")
}else{
print("newValue==存在===\(newValue)")
}
打印结果
newValue==不存在===nil
移除键值对
根据key 值移除, 会有一个返回值,根据返回值是否为nil 来判断时候移除成功,如果移除成功 会返回被移除的key对应的value值,如果key不存在或者移除失败那么返回nil
let move = dictM.removeValueForKey("ker9") if move == nil { print("move=nil==\(move)") }else { print("move=success==\(move)") } print(dictM)
移除所有元素, 如果keepCapacity为True,则保留字典原有的存储空间。
dictM.removeAll(keepCapacity: true)
遍历字典
for (key,value) in dictM { print("\(key)----\(value)") }
获取字典所有的key
for key in dictM.keys { print("====\(key)") }
获取字典所有的value
for value in dictM.values{ print(value) }
将字典的key或者value 作为数组的元素 组成新的数组
let arraykey = [String](dictM.keys) let arrayValue = [String](dictM.values) print(arrayValue)