美文网首页
Swift字典

Swift字典

作者: 奔跑的鸿 | 来源:发表于2020-06-11 22:31 被阅读0次
    • 字典的格式:Dictionary<KeyType,ValueType>或[KeyType:ValueType]
    • 创建字典,不可变字典用let声明,可变字典用var声明.
      创建一个空字典:var someDict = [Int: String]()
      可变字典实例:var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
    • key一定要是可以hash(String, Int, Double, Bool),value没有要求
    let dict = ["name": "lnj", "age": 30] as [String : Any];
    或
    let dict:[String:Any] = ["name": "lnj", "age": 30]
    
    • 获取value,语法:var someVar = someDict[key]
    dict["name"] //输出"lnj"
    或
    someDict[2] //输出Optional("Two")
    
    • 新增
    //如果对应的key在字典中没有,那么就会更新该键值对,否则更新该key的value
    var dict2 = ["name": "lnj", "age": 30] as [String : Any] //输出["name": "lnj", "age": 30]
    dict2["gender"] = "man" //输出"man"
    dict2 //输出["name": "lnj", "age": 30, "gender": "man"]
    

    也可以用updateValue(forKey:)增加或更新字典的内容。返回Optional值

    var oldVal = someDict.updateValue("ZhangSan", forKey: "name")
    print( "key = 1 旧的值 \(oldVal)" ) #输出"lnj"
    print( "key = 1 的值为 \(someDict["name"])" ) #输出"ZhangSan"
    
    • 删除
    dict2.removeValue(forKey: "name")
    dict2 //输出["gender": "man", "age": 30]
    

    也通过指定键的值为nil来移除键值对

    dict2[@"name"] = nil
    
    • 更新
    dict2["age"] = 42
    
    • 字典数组
    let arrDic:[[String:Any]] = [
      ["name":"hello","age":22],
      ["name":"hi","age":23]
    ]
    print(arrDic)
    
    • 合并字典
    var dict3 = ["score": 99] //输出["score": 99]
    for (key, value) in dict3
    {
        dict2[key] = value
    }
    dict2 //输出 ["gender": "man", "age": 42, "score": 99]
    
    • 字典遍历
    for e in dictionary
    {
        print("key = \(e.key) value = \(e.value)")
    }
    //写法二
    for (key,value) in dictionary
    {
        print("key = \(key) value = \(value)")
    }
    

    enumerate()方法遍历字典,返回的是字典的索引index及 元组(key, value)

    var dictionary = ["name": "lnj", "age": 30] as [String : Any]
    for (index, tuple) in dictionary.enumerated() {
        print("下标index:\(index) - 键值对:\(tuple)")
        print("  访问key:\(tuple.key), value:\(tuple.value)")
        //也可以写成  print("  访问key:\(tuple.0), value:\(tuple.1)")
    }
    

    以上程序执行输出结果为:

    下标index:0 - 键值对:(key: "age", value: 30)
        访问key:age, value:30
    下标index:1 - 键值对:(key: "name", value: "lnj")
        访问key:name, value:lnj
    
    • 字典转换为数组
    var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
    let dictKeys = [Int](someDict.keys)
    let dictValues = [String](someDict.values)
    print("输出字典的键(key)")
    for (key) in dictKeys {
        print("\(key)")
    }
    print("输出字典的值(value)")
    for (value) in dictValues {
        print("\(value)")
    }
    

    相关文章

      网友评论

          本文标题:Swift字典

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