- 来源:http://www.cnblogs.com/QianChia/p/5777434.html#_label6
public struct Dictionary<Key : Hashable, Value> : CollectionType, DictionaryLiteralConvertible
public class NSDictionary : NSObject, NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration
- 字典用于存储无序的数据元素值,它可以存储任何类型的元素,甚至可以将数组作为字典的元素。
1、Dictionary 与 NSDictionary 的相互转换
- Dictionary 与 NSDictionary 之间可以直接相互转换。Dictionary 转转成 NSDictionary 时,数组中的各项元素被转换为 AnyObject 类型。NSDictionary 转换成 Dictionary 时,数组中的各项元素也被转换为 AnyObject 类型。
let dictinoary:[String:String] = ["key1":"value1", "key2":"value"]
let nsDictionary1:NSDictionary = dictinoary
let nsDictionary2:NSDictionary = dictinoary as NSDictionary
let swiftDictionary1:Dictionary = nsDictionary1 as Dictionary
let swiftDictionary2:Dictionary = nsDictionary1 as! [String:String]
2、字典的 创建
let dic1 = [String:Int]()
let dic2 = Dictionary<String, Int>()
let dic3:Dictionary = ["key1":1, "key2":2]
let dic4:Dictionary<String, Int> = ["key1":1, "key2":2, "key3":3]
let dic5 = ["key1":1, "key2":2, "key3":3, "key4":4]
let dic6:[String:Int] = ["key1":1, "key2":2, "key3":3, "key4":4]
let dic7:[String:AnyObject] = ["key1":1, "key2":2, "key3":"value3", "key4":4]
let swiftDictionary = ["key1":1, "key2":2, "key3":3, "key4":4]
let nsdic1:NSDictionary = swiftDictionary
let nsdic2:NSDictionary = swiftDictionary as NSDictionary
let nsdic3:NSDictionary = NSDictionary(dictionary: swiftDictionary)
let nsdic4:NSDictionary = NSDictionary(dictionary: ["key1":1, "key2":2, "key3":3, "key4":4])
let nsdic5:NSDictionary = NSDictionary(object: "nsdic5", forKey: "key1")
let nsdic6:NSDictionary = NSDictionary(objects: ["nsdic6", 2], forKeys: ["key1", "key2"])
let nsdic7:NSDictionary = NSDictionary(dictionaryLiteral: ("key1", "nsdic7"),
("key2", 2),
("key3", 3),
("key4", 4))
let nsdic8:NSDictionary? = NSDictionary(contentsOfFile: NSHomeDirectory() + "/Desktop/test.txt")
let nsdic9:NSDictionary? = NSDictionary(contentsOfURL: NSURL(fileURLWithPath: NSHomeDirectory() +
"/Desktop/test.txt"))
3、字典元素个数的计算
let dic = ["key1":1, "key2":2, "key3":3, "key4":4]
let num:Int = dic.count
4、通过 key 找对应的 value
var dic:Dictionary = ["key1":1, "key2":2, "key3":3, "key4":4]
let value1 = dic["key2"]
let nsDic:NSDictionary = NSDictionary(dictionary: ["key1":1, "key2":2, "key3":3, "key4":4])
let value2:AnyObject? = nsDic["key2"]
let value3:AnyObject? = nsDic.objectForKey("key2")
let value4 = nsDic.objectsForKeys(["key3", "key4", "key5"], notFoundMarker: "not found")
5、通过 value 找对应的 key
let nsDic:NSDictionary = NSDictionary(dictionary: ["key1":1, "key2":3, "key3":3, "key4":4])
let keys:AnyObject = nsDic.allKeysForObject(3)
6、字典中所有 key 的获取
let dic:Dictionary = ["key1":1, "key2":2, "key3":3, "key4":4]
let keys1 = dic.keys
let nsDic:NSDictionary = NSDictionary(dictionary: ["key1":1, "key2":2, "key3":3, "key4":4])
let keys2 = nsDic.allKeys
7、字典中所有 value 的获取
let dic:Dictionary = ["key1":1, "key2":2, "key3":3, "key4":4]
let values1 = dic.values
let nsDic:NSDictionary = NSDictionary(dictionary: ["key1":1, "key2":2, "key3":3, "key4":4])
let values2 = nsDic.allValues
8、字典键值对的 追加
var dic:Dictionary = ["key1":1, "key2":2, "key3":3, "key4":4]
dic["key5"] = 5
let nsDic:NSMutableDictionary = NSMutableDictionary(dictionary: ["key1":1, "key2":2, "key3":3, "key4":4])
nsDic["key5"] = 5
nsDic.addEntriesFromDictionary(["key6":6, "key7":7])
9、字典键值对的 修改
var dic:Dictionary = ["key1":1, "key2":2, "key3":3, "key4":4]
dic["key4"] = 100
dic.updateValue(44, forKey: "key4")
let nsDic:NSMutableDictionary = NSMutableDictionary(dictionary: ["key1":1, "key2":2, "key3":3, "key4":4])
nsDic["key3"] = 33
nsDic.setObject(100, forKey: "key4")
nsDic.setDictionary(["key6":6, "key7":7])
10、字典键值对的 删除
var dic:Dictionary = ["key1":1, "key2":2, "key3":3, "key4":4]
dic.removeValueForKey("key2")
dic.removeAll(keepCapacity: true)
let nsDic:NSMutableDictionary = NSMutableDictionary(dictionary: ["key1":1, "key2":2, "key3":3, "key4":4])
nsDic.removeObjectForKey("key2")
nsDic.removeObjectsForKeys(["key1", "key4"])
nsDic.removeAllObjects()
11、字典遍历
let nsDic:NSDictionary = NSDictionary(dictionary: ["key1":1, "key2":2, "key3":3, "key4":4])
for (_, obj) in nsDic {
print(obj)
}
nsDic.enumerateKeysAndObjectsUsingBlock { (key:AnyObject, obj:AnyObject, stop:UnsafeMutablePointer<ObjCBool>) in
print(obj)
}
let keyEnu:NSEnumerator = nsDic.keyEnumerator()
while let key:AnyObject = keyEnu.nextObject() {
print(nsDic.objectForKey(key))
}
let objEnu:NSEnumerator = nsDic.objectEnumerator()
while let obj:AnyObject = objEnu.nextObject() {
print(obj)
}
12、字典排序
let nsDic:NSDictionary = NSDictionary(dictionary: ["key1":"value1", "key2":"value2", "key3":"value3", "key4":"value4"])
let keys1 = nsDic.keysSortedByValueUsingComparator { (obj1:AnyObject, obj2:AnyObject) -> NSComparisonResult in
return (obj1 as! String).compare(obj2 as! String)
}
for key in keys1 {
print(nsDic.objectForKey(key))
}
let keys2 = nsDic.keysSortedByValueUsingSelector(#selector(NSNumber.compare(_:)))
for key in keys2 {
print(nsDic.objectForKey(key))
}