字典/*
字典
* OC @{key:value}
* Swift [key:value]
* 和数组一样, 如果用let修饰就是不可变字典, 如果用var修饰就是可变字典
*/
// 开发技巧: 在iOS开发中使用频率最高的就是 [String: AnyObject]
let dict1 = ["name": "lnj", "age": 3]
var dict2:[String: AnyObject]
dict2 = ["name": "lnj", "age": 3]
# 获取
// 注意点: 从字典中取出的值都是可选类型的值
// 因为通过一个key取值, 可能取得到, 也可能取不到, 所以返回一个可选类型的值
// 如果!写在[]后面, 代表取出来的值一定有值
// 如果!写在dict后面, 代表dict一定有值
print(dict2["name"]!)
# 更新
dict2["name"] = "zs"
dict2
# 添加
// 也就是说, 如果key存在就是更新, 如果key不存在就是添加
dict2["score"] = 99
dict2
# 遍历
for key in dict2.keys
{
print(dict2[key])
}
// 会将字典中的key赋值给()中的第一个变量k
// 会将字典中的value赋值给()中的第二个变量v
// 注意: k/v随便写
// ()括起来的东西我们称之为元祖, 元祖是Swift中新增的一种数据类型
for (x, o) in dict2
{
print(x)
print(o)
}
# 合并
var dict3:[String: AnyObject] = ["name": "lnj", "age": 3]
var dict4:[String: AnyObject] = ["score": 99]
// 字典不能像数组一样通过+=来合并
//dict3 += dict4
for (k, v) in dict3
{
// 要在声明时统一字典的格式,不然报错
// 因为如果不加[String: AnyObject],dict3默认是此类型,
// dict4默认是[String: Int],不能把AnyObject给Int赋值
dict4[k] = v
}