1、数组Array
数组是存储为单个值的值的集合。例如,John,Paul,George和Ringo是名字,但是数组使您可以将它们分组为一个名为The Beatles的单一值。
let john = "John Lennon"
let paul = "Paul McCartney"
let george = "George Harrison"
let ringo = "Ringo Starr"
let beatles = [john, paul, george, ringo]
//let beatles:[String] = [john, paul, george, ringo]
您可以通过在方括号内写一个数字来从数组中读取值。数组位置从0开始计数
beatles[1]
//:如果读取不存在的项目,Swift就会崩溃。例如,尝试beatles[9]
2、集合Sets
集合特性:元素不重复、存储无序、元素类型均相同。
您可以直接从数组创建集,如下所示:
let colors = Set(["red", "green", "blue"])
如果您尝试将重复项插入到集合中,则重复项将被忽略
3、元组Tuples
元组允许您将多个值存储在一个值中。这听起来像数组,但是元组不同:
1、您不能在元组中添加或删除项目;它们的大小是固定的。
2、您无法更改元组中的项目类型;它们始终具有与创建时相同的类型。
3、您可以使用数字位置或命名它们来访问元组中的项目,但是Swift不允许您读取不存在的数字或名称。
var name = (first: "Taylor", last: "Swift")
//读取
name.0
//name.first
创建元组后可以更改其值,但不能更改值的类型。因此,如果您尝试将其更改name
为be (first: "Justin", age: 25)
,则会收到错误消息。
4、字典Dictionary
字典就像数组一样是值的集合,但是您不必使用整数位置存储内容,而是可以使用所需的任何内容来访问它们。
存储字典数据的最常见方法是使用字符串
let heights = [
"Taylor Swift": 1.78,
"Ed Sheeran": 1.73
]
//读取
heights["Taylor Swift"]
注意:使用类型注释时,字典用括号括起来,在标识符和值类型之间用冒号表示。例如[String: Double]
和[String: String]
。
如果您尝试使用不存在的键从字典中读取一个值,Swift将会发回您nil
-完全没有。尽管这可能是您想要的,但还有另一种选择:我们可以为字典提供一个默认值,以供我们在需要缺少键的情况下使用。
let favoriteIceCream = [
"Paul": "Chocolate",
"Sophie": "Vanilla"
]
favoriteIceCream["Paul"]
我们可以通过将字典的默认值设置为“未知”来解决此问题,以便在找不到夏洛特冰淇淋时,返回“Unknown”而不是nil:
favoriteIceCream["Charlotte", default: "Unknown"]
5、创建空集合
数组,集合和字典称为集合,因为它们将值集中在一起。
如果要创建一个空集合,只需写出它的类型,然后加上和关闭括号即可。例如,我们可以创建一个空字典,其中包含用于键和值的字符串,如下所示
var teams = [String: String]()
teams["Paul"] = "Red"
//您可以创建一个空数组来存储整数
var results = [Int]()
//创建一个空集,这是通过不同的方式完成的
var words = Set()
var numbers = Set()
Swift仅对字典和数组具有特殊的语法;其他类型必须使用尖括号语法(例如set)。
如果需要,可以使用类似的语法创建数组和字典:
var scores = Dictionary()
var results = Array()
6、枚举Enumerations
枚举(通常称为枚举)是一种定义一组相关值的方式,使它们更易于使用。
enum Result {
case success
case failure
}
let result4 = Result.failure
除了存储简单值之外,枚举还可以存储附加到每种情况的关联值。这使您可以将附加信息附加到枚举,以便它们可以代表更多细微差别的数据
//enum Activity {
// case bored
// case running
// case talking
// case singing
//}
enum Activity {
case bored
case running(destination: String)
case talking(topic: String)
case singing(volume: Int)
}
//
let talking = Activity.talking(topic: "football")
有时您需要能够为枚举赋值,以便它们具有含义。这使您可以动态创建它们,并以不同方式使用它们。
enum Planet: Int {
case mercury
case venus
case earth
case mars
}
Swift会自动为每个数字分配一个从0开始的数字,您可以使用该数字创建相应枚举大小写的实例。例如,earth
将被赋予数字2,因此您可以这样编写:
let earth = Planet(rawValue: 2)
也可以改变从1开始
enum Planet: Int {
case mercury = 1
case venus
case earth
case mars
}