美文网首页
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