zoukankan      html  css  js  c++  java
  • swift学习第七天:字典

    字典的介绍

    • 字典允许按照某个键来访问元素
    • 字典是由两部分集合构成的,一个是键(key)集合,一个是值(value)集合
    • 键集合是不能有重复元素的,而值集合是可以重复的,键和值是成对出现的
    • Swift中的字典
      • Swift字典类型是Dictionary,也是一个泛型集合
    import UIKit
    
    // 1.字典的定义
    // 1>不可变字典(let)
    // 注意:1:在swift中无论是数组还是字典都是使用[],但是如果[]中存放的是元素,编译器会认为是一个数组.如果[]中存放的是键值对,编译器会认为是一个字典. 2:如果字典中的value值的类型都是相同的,那么不用做类型转换,也就是不用加as [String : Any](字典和数组中都可以存放基本的数据类型,在swift中基本的数据类型也被看做是对象),如果在字典中的value值的类型都相同,则就不需要添加类型转换,转为as [String : Any]
    
    
    let dict = ["name" : "why", "age" : 18, "height" : 1.88] as [String : Any]
    
    let dictQ = ["hello":"1","bhe":"2","hahdfiasdf":"234"]
    
    
    
    
    // 2>可变字典(var):字典,数组,元组都是泛型集合,所以必须在初始化的时候,规定其里面的元素类型,如果规定value值是AnyObject,则对字典进行赋值的时候,dictM["age"] = 18 as AnyObject?,类型推到不能知道它是Int类型还是AnyObject类型,所以需要进行类型转换,as AnyObject?
    // var dictM = Dictionary<String, AnyObject>()
    var dictM = [String : AnyObject]()
    
    
    // 2.对可变字典的操作
    // 2.1.添加元素
    // dict["weight"] = 60 错误写法
    dictM["name"] = "why" as AnyObject?
    dictM["age"] = 18 as AnyObject?
    dictM["heihgt"] = 1.88 as AnyObject?
    dictM["weight"] = 75 as AnyObject?
    
    
    // 2.2.删除元素
    dictM.removeValue(forKey: "name")
    
    
    // 2.3.修改元素
    // 注意:如果有对应的key,则修改对应的value,如果没有对应的key,则添加对应的键值对
    dictM["age"] = 30 as AnyObject?
    dictM
    
    
    // 2.4.获取元素
    dictM["weight"]
    
    
    
    
    // 3.遍历字典
    // 3.1.遍历所有的key
    for key in dictM.keys {
        print(key)
    }
    
    // 3.2.遍历所有的value
    for value in dictM.values {
        print(value)
    }
    
    // 3.3.遍历所有的key/value
    for (key, value) in dictM {
        print(key)
        print(value)
    }
    
    
    
    // 4.合并字典
    // 注意:字典即使类型一直也不可以先加合并
    let tempDict : [String : AnyObject] = ["phoneNum" : "+86 110" as AnyObject, "sex" : "" as AnyObject]
    
    //let resultDict = tempDict + dictM
    
    for (key, value) in tempDict {
        dictM[key] = value
    }
    
    dictM
  • 相关阅读:
    《Programming WPF》翻译 第8章 1.动画基础
    一些被遗忘的设计模式
    《Programming WPF》翻译 第4章 数据绑定
    《Programming WPF》翻译 第3章 控件
    《Programming WPF》翻译 第5章 样式和控件模板
    《Programming WPF》翻译 第7章 绘图
    《Programming WPF》翻译 第9章 自定义控件
    《Programming WPF》翻译 第7章 绘图 (2)
    《Programming WPF》翻译 第8章 前言
    关于Debug和Release之本质区别
  • 原文地址:https://www.cnblogs.com/cqb-learner/p/5884014.html
Copyright © 2011-2022 走看看