swift字典的基本使用
前言
来说一下,学了那么久swift的感受,总体来说:感觉还是不太好,总感觉没有Java的语言优美,也可有java容易使用,可能是我才上手的吧 ,指导老师也经常说,学习要进行对比 但是我总觉得对比不来 ,但是学习了几门语言后发现:任何语言都逃离不了 基本类型 和 控制 循环 集合等。总结就对了。
今天说的是swift 的字典:是最基础最基础的:如若你觉得容易 还请您 多多指教 谢谢。
一:我们先看一下什么是字典:官方定义:
字典是一种无序的集合,它存储的是键值对之间的关系,其所有键的值需要是相同的类型,所有值的类型也需要相同。每个值(value)都关联唯一的键(key),键作为字典中这个值数据的标识符。和数组中的数据项不同,字典中的数据项并没有具体顺序。你在需要通过标识符(键)访问数据的时候使用字典,这种方法很大程度上和在现实世界中使用字典查字义的方法一样。
二:我们看一下如何创建一个字典:
1:你可以像数组一样使用构造语法 创建一个拥有确定类型的字典:
如:
var zidian2 = [Int:String]()
上面是用[int:string] 创建了一个空的字典 他的键是int类型 值是string类型
2:我们给上面的字典添加一个键值对:
var zidian2 = [Int:String]()
zidian2[12]="ssj"
上面在原来空字典的基础上 添加了一个键是 12 值是:ssj的键值对。
我们还可以把原来的字典变成空的字典:
看:
zidian2=[:]
也就是说在中括号里面加一个冒号 他就又成了空的字典
三:我们看一下如何用字典的字面量来创建字典
官方文档说:我们可以使用字面量来构造字典 。来看一下官方如何介绍的:
话不多说,我们来创建一个 字面量的字典:上代码:
var zidian3:[String:String] = ["name":"sjsj","age":"sss"]
上面创建了一个key的类型为 String values的类型也为String的字典,他被声明为:[String:String] 类型 所以 键和值的值都是 string类型。
当然你也可以使用 swift的类型推断 来创建字典:上代码:
var zidian = ["name":"sjsj","age":"sss","sex":"nan"]
注意!:上面的代码 他的键和值必须是一个类型 才可以不进行声明类型。
四:如何访问和修改字典:
1:访问字典:
在我们前面说了数组,但是字典和数组差不多我们可以通过.count
来获取字典的数据数量。
看代码:
var zidian = ["name":"sjsj","age":"sss","sex":"nan"]
zidian.count
//3
是和数组差不多吧 。
诶 ! 有的同学肯定会说 如果我们的字典没有元素 怎么搞? 你要问就是 看文档:
记住这个 isEmpty哦 好多地方用到呢!
那我们如何给字典进行添加元素呢?? 先看代码:
//改变键所对的值
zidian3["name"] = "sjjajs"
上面的添加元素的时候 我们要注意了 他会先进性一个判断 如果该字典没有此key就进行添加 ,但是如果有此key 他会把对应key的值 改变 这一点注意了哦!
那我们如何访问呢??
zidian3["name"]
这个访问我们在用的时候 我们最好先进行 判断是否为 nil 看代码:
if zidian3.isEmpty {
print("字典为空")
}else{
zidian3["sex"]
}
2 如何修改一个字典?
这个内容较多 先看官方文档:
我们一个一个来说:
updateValue(_:forKey:)
方法可以设置或者更新特定键对应的值
看例子:if let oldvalues = zidian.updateValue("qwe", forKey: "age") { print(oldvalues) }
方法在这个键不存在对应值的时候会设置新值或者在存在时更新已存在的值
我们也可以这样:
if let values = zidian["sss"]{
print("有该值\(values)")
}
使用特定的下标语法 在字典中 检索特定的键对应的值 因为有可能该没有值 返回的是一个可选类型 因为 可选类型在定义的时候 可以有值 可以没有值
那我们如何 删除一个特定的键值对呢??
可以使用下标语法通过将某个键的对应值赋值为 nil 来从字典里移除一个键值对:
上代码:zidian3["name"] = nil
我们还可已用removeValues 来移除键值对:用到的死活可选绑定的解包 还的是强制解包:
if let hhhh = zidian3.removeValue(forKey: "age") {
print("已经移除")
}else{
print("没有")
}
上面是 如果存在此键值对就被移除 否则就返回一个 nil 因为返回的是一个可选类型
五:遍历一个字典:
这个我们可以使用 for in 来进行遍历 再补充一个 swift 支持像 java那样的遍历哦
1遍历字典的key
for item in zidian2.keys {
print(item)
}
2 遍历字典的 values
for values in zidian2.values{
print(values)
}
另外一个 我们还可以对 字典的 key 或者 values 进行排序
例子:
zidian2.keys.sorted()
意思就是 对ziidan2的key 进行排序 用的是swift自带的方法 和 java差不多。
今天就到这里 。有喜欢的,欢迎加入我们的小窝 ,我们一起学习swift,
企鹅群:934045632 欢迎加入 我们一起 学习 swift
如果上面有错的 或者没讲到的 还请你多多指教 多多支持 谢谢 !
上一篇: swift学习2