美文网首页
【Swift】 Collections初识 - Dictiona

【Swift】 Collections初识 - Dictiona

作者: 修羅童鞋 | 来源:发表于2017-06-25 09:58 被阅读0次

    声明:此博客是本人在泊学网学习Swift过程的笔记与心得

    Dictionary

    通过key值来查询value值的数据结构

    初始化

    // 可以通过[key.Type: value.Type]的形式来代表Dictionary
    let dic: [String: Int] = [
      "First": 1,
      "Second": 2,
      "Third": 3
    ]
    

    可以通过key值来获取对应的value值

    dic["First"] // 1
    dic["Third"] // 3
    

    而如果通过没有定义的key来获取值,则会返回一个nil
    由于value的类型并不是单纯的value.Type而是Optional类型,因此可以设置成nil来代表key的不存在,于是,也可以通过设置key对应的value为nil来删除Dictionary中的值

    dic["End"] // nil
    // 删除First对应的value
    dic["First"] = nil
    

    常用属性

    Keys

    Dictionary可以通过keys属性来获取当前Dictionary中所有的key,获取的对象可以通过forEach或for等方式来遍历(返回对象的类型较复杂)

    dic.keys.forEach { print($0) }
    for key in dic.keys { print(key) }
    
    Values

    Dictionary可以通过values属性来获取当前Dictionary中所有的value,操作方式同Keys

    增删改查

    Swift中Dictionary对于增删改查有着极大的便利,增加元素只需要直接给Dictionary增加key与value就可以了,并不需要调用API

    dic["Forth"] = 4
    

    在上面写到过,删仅需要将key对应的value设置成nil即可

    dic["Forth"] = nil
    

    修改也是很简单的,就是把key对应的value修改即可

    dic["First"] = 0
    

    key对应value,通过key直接获取value

    dic["First"] // 0
    

    当然,这只是最基础的,如果需要遍历的操作,则可通过下面几种方式

    遍历

    首先说明,Dictionary中,key的存在是无序的,也就是说正常的遍历会得到不同顺序的结果


    Dictionary无序截图
    // 通过简单的for循环遍历
    // dic中是按照key,value的形式排列的
    for (key, value) in dic {
        print("\(key): \(value)")
    }
    
    // 通过forEach闭包遍历
    // 当$0与$1同时存在时,$0->key $1->value
    dic.forEach { print("\($0): \($1)")}
    
    // 当仅有$0存在时,$0->(key: xxx, value, xxx)
    dic.forEach { print("\($0)") }
    

    当然,如果强制要求按照固定的顺序遍历Dictionary也不是没办法,不过,就要从keys上动手脚
    试想一下,如果keys的顺序每一次都是固定的,那么Dictionary其实也是固定顺序的了,下面是一个最简单的基于keys的排序实现:

    for key in dic.keys.sorted() {
        print("\(key): \(dic[key]!)")
    }
    

    相关文章

      网友评论

          本文标题:【Swift】 Collections初识 - Dictiona

          本文链接:https://www.haomeiwen.com/subject/bjxuxxtx.html