Swift 03.Dictionary

时间:2023-12-05 17:57:26

字典

key它必须是可哈希的,也就是说,它必须能够提供一个方式让自己被唯一表示出来。Swift的所有基础类型(例如String、Int、Double和Bool)默认都是可哈希的,这些类型都能够用作字典中的键。枚举成员中没有绑定值的值(参见枚举)默认也是可哈希的。 而值可以是NSobjcet的类型

不可变字典 let

let dictA = ["key1":"value1","key2":"value2","key3":]

print(dictA["key3"])

可变字典 var 字典的键值对的类型 是根据初始化时候的类型来决定的,类型是后面无法改变的

①第一种字典:

可以存放任意类型的字典 比如 键值对(key:value) 可以是数组

let array = [,,,,]

var dictB = [:"value1","":"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"] = ""

修改字典中某一个key对应的value值

dictM[""] = "change"

更新字典的键值对.如果存在相同的键,那么就更新对应的值!如果不存在,就将新的键值对放入字典

updateValue(forKey:)函数返回一个值的类型的可选值。例如一个值类型为String的字典,该函数返回值的类型为String?。如果更新前该键的值存在,函数返回值就是该键更新前的值,如果不存在,函数返回值就是nil:  这让你能够检测是否发生了值的更新。

let oldValue = dictM.updateValue("", forKey: "")

因为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)