首页 » Swift » Swift学习笔记(9)——字典

Swift学习笔记(9)——字典

原文 http://blog.csdn.net/zhangergou0628/article/details/78392211

2017-10-30 14:20:52阅读(337)

字典

字典是一种存储多个相同类型的值的容器。
每个值(value)都关联唯一的键(key),键作为字典中的这个值数据的标识符。
字典中的数据项并没有具体顺序。通过标识符(键)访问数据。

1. 字典类型简化语法

使用Dictionary< Key, Value >定义
Key:字典中键的数据类型。
Value:字典中对应于这些键所存储值的数据类型。
简化:[Key: Value]

2. 创建一个空字典

(1)使用构造语法创建一个拥有确定类型的空字典:

var namesOfIntegers = [Int: String]()
// namesOfIntegers 是一个空的 [Int: String] 字典
// [Int: String],它的键是Int型,值是String型。

(2)用空字典字面量来创建一个空字典,记作[:]

namesOfIntegers[16] = "sixteen"
// namesOfIntegers 现在包含一个键值对
namesOfIntegers = [:]
// namesOfIntegers 又成为了一个 [Int: String] 类型的空字典
3. 用字典字面量创建字典

[key 1: value 1, key 2: value 2, key 3: value 3]
例子:

var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
// airports字典被声明为一种[String: String]类型,这意味着这个字典的键和值都是String类型。

如果它的键和值都有各自一致的类型,那么就不必写出字典的类型。
Swift 可以推断出Dictionary< String, String >是airports字典的正确类型。

var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
4. 访问和修改字典

(1)只读属性count
(2)布尔属性isEmpty
(3)使用下标语法
<1>添加

airports["LHR"] = "London"
// airports 字典现在有三个数据项

<2>修改
使用下标语法来改变特定键对应的值。

airports["LHR"] = "London Heathrow"
// "LHR"对应的值 被改为 "London Heathrow

<3>检索
如果这个字典包含请求键所对应的值,下标会返回一个包含这个存在值的可选值;否则将返回nil。

if let airportName = airports["DUB"] {
    print("The name of the airport is \(airportName).")
} else {
    print("That airport is not in the airports dictionary.")
}
// 打印 "The name of the airport is Dublin Airport."

<4>删除
通过给某个键的对应值赋值为nil来从字典里移除一个键值对。

airports["APL"] = "Apple Internation"
// "Apple Internation" 不是真的 APL 机场, 删除它
airports["APL"] = nil
// APL 现在被移除了

(4)updateValue(_:forKey:)方法可以设置或者更新特定键对应的值。
在这个键不存在对应值的时候会设置新值或者在存在时更新已存在的值,且返回更新值之前的原值。
返回对应值的类型的可选值。举例来说:对于存储String值的字典,这个函数会返回一个String?或者“可选 String”类型的值。
如果有值存在于更新前,则这个可选值包含了旧值,否则它将会是nil。

if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") {
    print("The old value for DUB was \(oldValue).")
}
// 输出 "The old value for DUB was Dublin."

(5)removeValue(forKey:)方法:移除键值对。
在键值对存在的情况下会移除该键值对并且返回被移除的值;在没有值的情况下返回nil。

5.遍历

(1)for-in
每一个字典中的数据项都以(key, value)元组形式返回,并且我们可以使用临时常量或者变量来分解这些元组:

for (airportCode, airportName) in airports {
    print("\(airportCode): \(airportName)")
}
// YYZ: Toronto Pearson
// LHR: London Heathrow

(2)访问keys或者values属性

for airportCode in airports.keys {
    print("Airport code: \(airportCode)")
}
// Airport code: YYZ
// Airport code: LHR
for airportName in airports.values {
    print("Airport name: \(airportName)")
}
// Airport name: Toronto Pearson
// Airport name: London Heathrow

可以直接使用keys或者values属性构造一个新数组:

let airportCodes = [String](airports.keys)
// airportCodes 是 ["YYZ", "LHR"]
let airportNames = [String](airports.values)
// airportNames 是 ["Toronto Pearson", "London Heathrow"]

(3)sorted()方法
Swift 的字典类型是无序集合类型。为了以特定的顺序遍历字典的键或值,可以对字典的keys或values属性使用sorted()方法。

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹