覺得字典
我用起來(lái)也很惡心
有很多類型
var dic = Dictionary<String, Any>.init()
dic["name"] = "liugaohui"
dic["age"] = 25
print(dic["name"]) //這樣是沒有問(wèn)題的
print(dic.object(forKey: "age")) //這個(gè)不對(duì)!.由于是 Dictionary 類型 因?yàn)槎x的類型不符 具體 這個(gè)如何使用 下面再說(shuō)
但是如果 print(dic.name) 會(huì)不對(duì) 這個(gè)明明就是取model 的時(shí)候進(jìn)行定義取值的方式
道理同上
var dic1 = ["name":"liugaohui","age":25] as [String : Any]
print(dic1)
print(dic1.name) //會(huì)報(bào)錯(cuò)
print(dic1.object(forKey: "age"))//會(huì)報(bào)錯(cuò)
下面是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"] ?? "")
我們經(jīng)過(guò)測(cè)試 發(fā)現(xiàn) dic2["name"] 和 (dic2.object(forKey: "name")均可以 打印出來(lái)
賦值的時(shí)候同樣
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
不過(guò)Swift 還是 用 自帶 Dictionary 更舒服吧