swift 字典使用

觉得字典
我用起来也很恶心
有很多类型

var dic = Dictionary.init()
dic["name"] = "liugaohui"
dic["age"] = 25
print(dic["name"]) //这样是没有问题的
print(dic.object(forKey: "age")) //这个不对!.由于是 Dictionary 类型 因为定义的类型不符 具体 这个如何使用 下面再说
但是如果 print(dic.name) 会不对 这个明明就是取model 的时候进行定义取值的方式

道理同上
var dic1 = ["name":"liugaohui","age":25] as [String : Any]
print(dic1)
print(dic1.name) //会报错
print(dic1.object(forKey: "age"))//会报错

下面是OC使用

var dic2 = NSMutableDictionary.init()
dic2.setValue("liugaohui",forKey: "name")
dic2.setValue(25, forKey: "age")
dic2["sex"] = "m"
print(dic2.object(forKey: "name") ?? "none")
print(dic2["name"] ?? "none")
print(dic2["sex"] ?? "")
我们经过测试 发现 dic2["name"] 和 (dic2.object(forKey: "name")均可以 打印出来
赋值的时候同样
setValue 和 dic2["sex"] 都可以使用

但是这种 setValue 赋新值的方式 只能在NSMutableDictionary 使用

4.NSDictionary 是不可变字典
所以::
var dic3 = NSDictionary.init(objects: ["liugaohui",25], forKeys: ["name" as NSCopying,"age" as NSCopying])
dic3["name"]
dic3.object(forKey: "age")

初始化比较恶心,而且不可变 和 以前写的不一样了

综上 觉得 NSMutableDictionary > Dictionary > NSDictionary

不过Swift 还是 用 自带 Dictionary 更舒服吧

你可能感兴趣的:(swift 字典使用)