Swift 03.Dictionary

摘要:
该值可以是NSobjcet的类型不变字典letletdictA=[“key1”:“value1”,“key2”:“value 2”,“key 3”:4]print变量字典var字典的键值对的类型由初始化时的类型决定,以后不能更改类型。① 第一个字典:它可以存储任何类型的字典。例如,键值对可以是数组letarray=[1,2,3,4,5]vardictB=[1:“value1”,“2”:“value2”,“key3”:“value 3”,“key 4”:array]获取与dictB KeyEnumerator(){print}print对应的所有keyforkeyindiB② 第二个字典swift的字典类型的字典存储一些基本类型的键值对。vardictM:Dictionary=[“1”:“value1”,“2”:“value2”,“key3”:“value 3”,“key 4”:“4”]获取字典元素的数量dictM count将键值对插入字典dictM[“key6”]=“5”修改字典dictM中与键对应的值[“1“]=“change”更新字典的键值对。如果存在相同的密钥,请更新相应的值!
字典

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)

免责声明:文章转载自《Swift 03.Dictionary》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NOIP复习之1 数学数论linux下vi命令 修改文件及保存的使用方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Swift-数组

Swift数组 OC和Swift数组的比较 OC 只能存放对象 swift 既可以存放对象,又可以存Int,Float等基本数据类型 下面是swift数组的具体示范 空数组 let arr = [] let arr2 = [Int]() let arr3 = Array<Int>() 有值数组 let arr...

HashMap源码分析

final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { HashMap.Node<K,V>[] tab; HashMap.Node<K,V> p; int n, i; // 1.如果t...

Python接口自动化(二) 发送post请求的接口;发送post【data】;python中字典和json的区别

help函数 help(requests)查看相关注释和案例内容。 发送post请求的接口(dict参数)  发送post请求的接口(json参数) post的body是json类型,也可以用json参数传入。 先导入json模块,用dumps方法转化成json格式。  请求头header 现在由于对接口安全性的要求,使得模拟登陆越来越复杂,比上边介...

redisson实现分布式锁(spring整合redisson)

由于redis实现分布式锁不完美: 加锁的代码: /** * 加锁 * @param locaName 锁的key * @param acquireTimeout 获取超时时间 * @param timeout 锁的超时时间 * @return 锁标识 */ public stat...

JsonObject判断一个json串中是否含有某个key值

最近在做接口的调试工作,遇到将接收的XML信息转换成JsonObject后,取出某些key不存在的时候出现错误,所以对此方法做一个总结,这里为了方便就以json串来做演示。 import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject; public s...

ro.boot.bootreason property设置(androidboot.xxxx bootargs)

ro.boot.bootreason property设置(androidboot.xxxx bootargs) system/core/init.cpp static void process_kernel_cmdline() { // The first pass does the common stuff, and finds if we a...