Swift 语言提供 Arrays 、 Sets 和 Dictionaries 三种基本的 合类型用来存储 合数据。数组(Arrays)是有序
数据的 。集合(Sets)是无序无重复数据的 。字典(Dictionaries)是无序的键值对的 。
1.数组
创建空数组
var someInts = [Int]()
var someInts = Array
创建一个带有默认值的数组
var threeDoubles = Array(repeating: 0.0, count: 3)
var shoppingList: [String] = ["Eggs", "Milk"]
访问和修改数组
可以使用数组的只读属性 count 来获取数组中的数据项数量:
使用布尔属性 isEmpty 作为一个缩写形式去检查 count 属性是否为 0 :
使用 append(_:) 方法在数组后面添加新的数据项:
使用加法赋值运算符( += )也可以直接在数组后面添加一个或多个拥有相同类型的数据项:
使用下标语法来获取数组中的数据项
var firstItem = shoppingList[0]
可以用下标来改变某个已有索引值对应的数据值:
shoppingList[0] = "Six eggs"
调用insert(_:at:) 方法来在某个具体索引值之前添加数据项:
使用 remove(at:) 方法来移除数组中的某一项。
数组的遍历
如果我们同时需要每个数据项的值和索引值,可以使用 enumerated() 方法来进行数组遍历。 enumerated() 返回 一个由每一个数据项索引值和数据值组成的元组。我们可以把这个元组分解成临时常量或者变量来进行遍历:
for (index, value) in shoppingList. enumerated() {
print("Item \(String(index + 1)): \(value)")
}
// Item 1: Six eggs
// Item 2: Milk
// Item 3: Flour
// Item 4: Baking Powder
// Item 5: Bananas
2.集合
集合用得较少,而且用法与数组大同小异,主要讲记录集合的一些操作
使用 intersection(_:) 方法根据两个 合中都包含的值创建的一个新的集合。
使用 symmetricDifference(_:) 方法根据在一个 合中但不在两个 合中的值创建一个新的集合。
使用 union(_:) 方法根据两个 合的值创建一个新的集合。
使用 subtracting(_:) 方法根据不在该 合中的值创建一个新的集合。
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
oddDigits.union(evenDigits).sort()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits. intersection(evenDigits).sorted()
// []
oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
// [1, 9]
oddDigits. symmetricDifference(singleDigitPrimeNumbers).sorted()
// [1, 2, 9]
使用“是否相等”运算符( == )来判断两个集合是否包含全部相同的值。
使用 isSubset(of:) 方法来判断一个集合中的值是否也被包含在另外一个集合中。
使用 isSuperset(of:) 方法来判断一个集合中包含另一个集合中所有的值。
使用 isStrictSubset(of:) 或者 isStrictSuperset(of:) 方法来判断一个集合是否是另外一个集合的子集合或者父集合并且两个集合并不相等。
使用 isDisjoint(with:) 方法来判断两个集合是否不含有相同的值(是否没有交集)。
3.字典
字典是一种存储多个相同类型的值的容器。每个值(value)都关联唯一的键(key),键作为字典中的这个值数 据的标识符。
创建一个空字典
var namesOfIntegers = Int: String
var namesOfIntegers = Dictionary
创建一个带有默认值的字典
var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
访问和修改字典
使用布尔属性 isEmpty 作为一个缩写形式去检查 count 属性是否为 0 :
我们可以在字典中使用下标语法来添加新的数据项, 改变特定键对应的值。
字典的 updateValue(_:forKey:) 方法可以设置或者更新特定键对应的值。这个方法返回更新值之前的原值。
使用下标语法来通过给某个键的对应值赋值为 nil 来从字典里移除一个键值对。
使用removeValue(forKey:) 方法也可以用来在字典中移除键值对。这个方法返回移除值之前的原值。
字典遍历
for (airportCode, airportName) in airports {
}
通过访问 或者 属性,我们也可以遍历字典的键或者值:
for airportCode in airports.keys {
}
for airportName in airports.values {
}