覺得字典
我用起來也很惡心
有很多類型
var dic = Dictionary<String, Any>.init()
dic["name"] = "liugaohui"
dic["age"] = 25
print(dic["name"]) //這樣是沒有問題的
print(dic.object(forKey: "age")) //這個不對!.由于是 Dictionary 類型 因為定義的類型不符 具體 這個如何使用 下面再說
但是如果 print(dic.name) 會不對 這個明明就是取model 的時候進(jìn)行定義取值的方式
道理同上
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"] ?? "")
我們經(jīng)過測試 發(fā)現(xiàn) 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 更舒服吧