zoukankan      html  css  js  c++  java
  • Swift 03.Dictionary

    字典

    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)
  • 相关阅读:
    django-makdown编辑器之编辑和显示
    Jenkins以root用户运行的方法
    利用Django提供的ModelForm增删改数据的方法
    Django之URL反向解析
    腾讯云-tke-设置configmap
    线程同步
    测试人的福利来了!柠檬班题库免费对外开放啦。
    如何设计一个高并发系统?
    为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?
    记一次idea问题—performing vcs refresh...
  • 原文地址:https://www.cnblogs.com/Atropos/p/5085476.html
Copyright © 2011-2022 走看看