Swift - 字典
字典是储存同一类型多个值的容器。每一个值都对应这一个唯一的键(Key),就像是字典内的每一个值都有一个标识符。和数组内的元素是有区别的,字典内的元素是没有特殊的序列的。当你需要根据标识符来查找批量的值时,就可以使用字典,和在真实世界的字典中寻找某个字的解释相似。
Swift字典储存一个特定类型的键和值,与Objective-C的NSDictionary 和NSMutableDictionary不同,因为它们是使用各种的对象来作为它们的键和值,而且并不提供任何有关对象的具体信息。在Swift中,对于一个特定的字典,它所能储存的键和值的类型都是确定的,无论是明确声明的类型还是隐式推断的类型。
Swift的字典写法是Dictionary<KeyType,ValueType>,KeyType是你想要储存的键的类型,ValueType是你想要储存的值的类型。
唯一的限制就是KeyType必须是可哈希的(hashable)——就是提供一个形式让它们自身是独立识别的。Swift的所有基础类型(例如字符串(String),整形(Int),双精度(Double)和布尔(Bool))在默认是可哈希的(hashable),和这些类型都常常被当作字典的键。没有协助值(associated values)的枚举成员(具体描述在 Enumerations)默认也是可哈希的(hashable)。
> 注意
airport字典是被定义为一个变量(使用var 标识符)而不是常量(使用let 标识符),所以在下面的例子可以直接添加元素。
var air :Dictionary <String,String> = ["name":"beijing","age":"12"] 这个是定义了键类型,和值类型都是string类型
> 注意
Swift中的字典类型是非序列化集合,序列化取回键,值,或者键值对的顺序是不明确的。
1,字典 .count 是有多少个字典
2,修改字典里面的value值和添加一根键值对
//var air :Dictionary <String,String> = ["name":"beijing","age":"12","sex":"girl"]
air["name"] = "liaolijun" //如果是直接用字典里面的key值,这个就是直接修改这个key的value值
//打印: [age: 12, sex: girl, name: liaolijun]
air["nickname"] = "liaolijun" //这个key值没有在字典里面,这个就是直接添加一根键值对
//打印: [age: 12, nickname: liaolijun, sex: girl, name: beijing]
3,去设置或者更新一个特定键的值 字典名.updateValue("" ,forKey:"")
if let oldvalue = air.updateValue("wujing", forKey: "name1"){
//这个key值如果不存在字典,则是添加键值对
println("old value is \(oldvalue)") //如果是添加,那么这个判断不会打印
}
//打印: [name1: wujing, age: 12, nickname: liaolijun, sex: girl, name: beijing]
if let oldvalue = air.updateValue("wujing", forKey: "name"){
//这个key值如果存在字典,则是修改里面的value值,name这个key值是存在这个字典里面,所以这个是修改
println("old value is \(oldvalue)") //oldvalue这个是接收删除的value值 oldvalue=liaolijun
}
//打印: [name: wujing, age: 12, nickname: liaolijun, sex: girl]
4,删除
字典名 .removeValueForKey(key: Key(这个是你要删除的key值)
if let remove = air.removeValueForKey("age"){
println("remove is \(remove)") //这个是删除的value值
}
//打印:[nickname: liaolijun, sex: girl, name: beijing]
5,创建一个空字典
var name = Dictionary<Int ,String>() //这个int是key的类型,string是value的类型
name[12] = "haha"
//打印 :[12: haha]