万事开头难,加油!

数组

在Swift中数组可以用变量和常量,例如

1
var city = ["Beijing", "Shanghai", "Guangzhou"]

如果标记了数组类型,那么就需要加方括号来标记数组的类型。

1
var city: [String] = ["Beijing", "Shanghai", "Guangzhou"]

当然,常量也可以作为数组

1
let city = ["Beijing", "Shanghai", "Guangzhou"]

调用的时候用方括号从0调用

1
city[1]

对应的是Shanghai

注意:

  • 1.如果你阅读不存在的项目,Swift就会崩溃。例如,尝试阅读beatles[9]不是一个好主意。
  • 2.如果你使用类型注释,阵列都写在括号:[String][Int][Double],和[Bool]
  • 3.在使用数组时,数组的名称后最好带s例如cities``papers``numbers等等,方便遍历数组是提取一个参数。

创建一个空数组

我们可以使用格式[<数据类型>]()来创建一个空的数组。

1
var city = [String]()

集合(无序数组)

在Swift中可以使用Set()包含数组来创建一个集合。例如:

1
var city = Set(["Beijing", "Shanghai", "Guangzhou"])

那么city对应的值有一种可能是Shanghai,Beijing,Guangzhou。集合是无序的,所以不能使用数字调用。

集合中的值只能存在一次,相同元素会被隐藏。例如:

1
var city = Set(["Beijing", "Shanghai", "Guangzhou","Shanghai", "Guangzhou"])

那么city对应的值有一种可能是Shanghai,Beijing,Guangzhou。集合中的值只能存在一次。

元组

1.元组不能够增加和删除项目,元素数量在创建时就已经固定。

2.元组不能够更改类型,元组类型在创建时就已经固定。

3.可以用数字和元素名称来进行检索。

1
var music = (Lyricist: "FangWenshan", Composer: "LinMaike", Singer: "ZhouJielun")

我想要调用音乐的作词人,我可以

1
music.0

或者说

1
music.Lyricist

请记住,创建元组后可以更改其值,但不能更改值的类型。因此,如果你尝试将其更改music(Lyricist: "FangWenshan", Composer: "LinMaike", Singer: 666),则会出现错误。

数组、集合、元组之间的区别

如果你需要一个类型、数量固定的一组数据或者每个项目都是固定和精确的,那么使用元组

1
let music = (Rank: 1, Lyricist: "FangWenshan", Composer: "LinMaike", Singer: "ZhouJielun")

如果你需要快速检索数据或者需要的数据是唯一不重复的值,使用集合

1
let city = Set(["Beijing", "Shanghai", "Guangzhou","Shanghai", "Guangzhou"])

如果你需要一定顺序或要求有重复项的数据,使用数组

1
var city = ["Beijing", "Shanghai", "Guangzhou"]

字典

在Swift中字典的格式例如:

1
2
3
4
let zhangHong = [
"first name": "Zhang",
"Last name": "Hong",
]

引号前面为标识符key,引号后为数据,例如我想要调用first name所对应的值,那么:

1
zhangHong["first name"]

注意:使用类型注释时,字典用括号括起来,在标识符和值类型之间用冒号表示。例如[String: Double][String: String]

字典的默认值

在请求字典的数据时,如果没有对应的key则请求得到的是nil(完全没有),有的时候我们需要一个默认值来应对这种情况。例如:

1
2
3
4
var favouriteColor = [
"ZhangHong": "Black"
"Vast": "Blue"
]

请求ZhangHong的值:

1
favouriteColor["ZhangHong"]

对应输出:Black

请求Mike的值:

1
favouriteColor["Mike"]

对应输出:nil

设置请求不到时默认值为White

1
favouriteColor["Mike", default: "White"]

创建空的字典

在创建空的字典时,可以用以下格式:

1
var favouriteColor = [String: String]()

我们可以添加一些条目,例如:

1
favouriteColor["ZhangHong"] = "Black"

同理,也可以创建一个空的数组。例如:

1
let num = [Int]()

但是如果创建一个集合,那么它的格式会变成:

1
let num = Set<Int>()

只有字典和数组是特殊的,其他都是使用<>形式。当然,这个是通用形式,你可以将这种格式应用到字典或者数组。例如:

1
2
var scores = Dictionary<String, Int>()
var results = Array<Int>()

注意在调用Dictionary<String, Int>时,中间的是逗号而不是引号,只有在直接使用方括号时才是引号。

枚举

类似于Excel的数据有效性。成功的避免了我们胡乱使用字符串的可能。例如:

1
2
let coding = "Python"
let coding = "Python3"

因为在2020年Python2已经停止了支持,所以Python和Python3想要表达的含义几乎相同,但是在Swift中他们是两个东西

如果使用枚举就不用担心这个事情,特别是多人协同的时候。例如:

1
2
3
4
5
enum Language {
case Python
case Swift
case Java
}

调用的时候可以通过点记法:

1
let coding = Language.Python

枚举关联值

在枚举的时候我们可以添加一些细微的差别,例如:

1
2
3
4
enum Party {
case talking
case running
}

这是一个完好的枚举,但是我们像添加一些关联信息,例如说话的人是谁,跑的人是谁。我们可以:

1
2
3
4
enum Party {
case talking(people: String)
case running(people: String)
}

现在我们可以更加精确的添加一些差别:

1
let case = Party.talking(people: "ZhangHong")

枚举原始值

我们可以为枚举创建一个按照数字排序的内容,例如:

1
2
3
4
5
enum Students:Int {
case zhanghong
case vaster
case soul
}

Swift会自动为他们分配一个从0开始的数字,例如zhanghong对应的是数字0,我们也可以自己单独设置这个原始值,使用rawValue来修改。

1
let soul = Student.soul(rawValue: 9)

我们还可以设置一个或多个的值,Swift会自动生成其他没有设置的值。例如:

1
2
3
4
5
enum Students:Int {
case zhanghong = 2
case vaster
case soul
}

这意味着soul对应的值为4

总结

  • 数组,集合,元组和字典可让你在单个值下存储一组项目。它们各自以不同的方式执行此操作,因此你使用哪种方法取决于所需的行为。
  • 数组按添加顺序存储项目,并使用数字位置访问它们。
  • 设置存储项目时没有任何顺序,因此你不能使用数字位置访问它们。
  • 元组的大小是固定的,你可以在每个项目中附加名称。你可以使用数字位置或名称来读取项目。
  • 词典根据键存储项目,你可以使用这些键读取项目。
  • 枚举是对相关值进行分组的一种方式,因此你可以使用它们而不会出现拼写错误。
  • 你可以将原始值附加到枚举,以便可以从整数或字符串创建它们,也可以添加关联的值以存储有关每种情况的其他信息。

参考资料

查看下一天的SwiftUI学习笔记

关于100days英文课程