【笔记】Swift学习笔记

前言

Swift学习笔记

注释

1
// 单行注释
1
/* 多行注释 */

初始化方法

  • 在程序启动后会立即执行
app/ViewController.swift
1
2
3
4
5
6
override func viewDidLoad() {
super.viewDidLoad()

...

}

数据类型

String:字符串
Int:整型
Float:单精度浮点型
Double:双精度浮点型
Bool:布尔型

true:对
false:错

Array:数组

[值, 值]

Dictionary:字典

[key: value]

变量

声明变量

基本类型

1
var 变量名: 数据类型

数组

1
var 变量名: [数组内存放的数据的数据类型]

定义变量

1
var 变量名 =

常量

声明常量

1
let 变量名: 数据类型

定义常量

1
let 常量名 =

输出语句

1
print(值)

格式化输出

字符串中插入变量值

  • 通过\()在字符串中插入变量值
1
print("字符串 \(常量名)")

占位符替换为变量值

  • 保留两位小数
1
String(format: "%.2f", 值)

生成随机数

生成随机整数

  • 生成区间为[最小值,最大值]的随机整数
1
Int.random(in: 1...2)
  • 生成区间为(最小值,最大值]的随机整数
1
Int.random(in: 1<..2)
  • 生成区间为[最小值,最大值)的随机整数
1
Int.random(in: 1..<2)

生成随机浮点数

  • 生成区间为[最小值,最大值]的随机浮点数
1
Float.random(in: 1...2)
  • 生成区间为(最小值,最大值]的随机浮点数
1
Float.random(in: 1<..2)
  • 生成区间为[最小值,最大值)的随机浮点数
1
Float.random(in: 1..<2)

生成随机布尔值

  • 值为truefalse
1
Bool.random() 

随机获取数组中的元素

  • 随机获取数组中的随机一个元素
1
[值, 值].randomElement()

安全检查(Optional)

定义允许为空的变量

  • 如果变量的值允许为空,则需要在数据类型的末尾使用?标记
1
var 变量名 数据类型? = nil

使用允许为空的变量

强制使用

  • 如果使用这个变量的时候,确信这个变量的值不为空,则需要在变量名的末尾使用!标记来强制使用这个变量
1
var 变量名: 数据类型 = 允许为空的变量名!

非空判断

  • 进行安全检查后使用允许为空的变量
1
2
3
if 允许为空的变量名 != nil {
var 变量名: 数据类型 = 允许为空的变量名!
}

赋值判断

  • 先在分之语句中将允许为空的变量赋值给一个新的变量,只有新的变量不为空值时才会进入代码块内,然后在分之语句的代码块内使用新的变量
1
2
3
if let 一定不为空的变量名 = 允许为空的变量名! {
var 变量名: 数据类型 = 一定不为空的变量名
}

指定空值的默认值

1
var 变量名: 数据类型 = 允许为空的变量名 ?? 默认值

非空才会执行

非空才会调用的属性
1
变量名?.属性名
非空才会调用的函数
1
变量名?.函数名()

运算符

赋值运算

  • =+=-=*=/=

赋值运算符两边,要么都加空格,要么都不加空格,不要出现一侧加空格一侧不加空格的情况,否则会报错

1
变量名=
1
变量名 =

比较运算符

  • ==>>=<<=!=

逻辑运算符

  • &&||!

分支语句

if

1
2
3
if 条件 {
符合条件时执行的语句
}
1
2
3
4
5
if 条件 {
符合条件时执行的语句
} else {
不符合条件时执行的语句
}
1
2
3
4
5
6
7
if 条件1 {
符合条件1时执行的语句
} else if 条件2 {
符合条件2时执行的语句
} else {
条件1和条件2都不符合时执行的语句
}

多个条件同时满足

1
2
3
if 条件1, 条件2 {
符合条件时执行的语句
}

switch

1
2
3
4
5
6
7
8
switch 变量 {
case1:
变量等于值1时执行的语句
case2:
变量等于值2时执行的语句
default:
变量不等于以上任何值时执行的语句
}
1
2
3
4
5
6
7
8
9
10
switch 变量 {
case 3...4:
变量在区间[3,4]时执行的语句
case 1..<2:
变量在区间[1,2)时执行的语句
case ...1:
变量在区间(,1)时执行的语句
default:
变量不在以上任何区间时执行的语句
}

循环语句

for

遍历数组

1
2
3
4
let list = []
for item in list {
...
}

遍历Set集合

  • Set集合的顺序是随机的
1
2
3
4
let set: Set = []
for item in set {
...
}

遍历字典

1
2
3
4
5
let map = ["key_1": "value", "key_2": "value"]
for item in map {
item.key
item.value
}

遍历字符串

1
2
3
4
let str = ""
for item in str {
...
}

遍历有序数列

1
2
3
4
let numList = 0...1
for item in numList {
...
}
不使用数列变量
1
2
3
for _ in 0...1 {
...
}

while

1
2
3
while 布尔表达式 {
...
}

计时器

定义一个空定时器

1
var timer = Timer()

创建一个定时器

timeInterval:指定间隔多久执行一次,单位秒
selector:指定间隔后执行的函数名
repeats:指定即时结束后是否重新计时

1
2
3
4
5
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateTimer), userInfo: nil, repeats: true)

@objc func updateTimer() {
...
}
1
2
3
timer = Time.scheduledTime(withTimeInterval: 1.0, repeats: false) { (timer) in
...
}

销毁定时器

1
timer.invalidate()

数学运算

指数运算

1
pow(底数, 指数)

异步

1
2
3
DispatchQueue.main.async {
...
}

字符串

字符串拼接

1
字符串变量.append("字符串")

完成

参考文献

哔哩哔哩——疯狂滴小黑