Swift语言基础学习;
在swif中t调用方法用 . 来调用方法;
### 如何去定义标志符
1. Swift定义标识符,必须制定该标识符是一个变量(let) 还是常量 (var)
2.规范:
let / var 标识符 :类型 = 赋值
3.如果一行代码中只有一条语句,那么语句结束时, ;冒号 可以省略
4.Swift中不需要下OC中的 @;
### 常量变量使用的注意
1.开发中优先使用常量 let 防止不小心修改掉之前赋的值
2.常量的本质;指向的内存地址不可以修改,但是可以通过内存地址找到对应的对象,通过对象修改内部的属性;
比如创建一个UIView ,view里面有backGroud alpha frame 之类 ,可以去修改;
3. Swift一般创建对象:
let view : UIView = UIView ( ) 一般后面都跟上括号( )
### 类型推导
1.在swift中如果在定义一个标识符时有直接给该标识符进行赋值, 那么系统会自动根据后面赋值的类型, 推导出前面标识符的类型
2.如果有直接赋值, 那么标识符后面的类型可以省略
3.可以通过Option + 鼠标左键, 查看标识符的类型
### 基本运算
1.进行基本加减运算,两个常量的运算;
要想进行运算;必须是同一个类型的才能进行基本运算;
### 逻辑分支
Swift和OC的差异
if后面的 ( ) 可以省略掉
swift中没有非0(nil)即真
Bool --> true/false
### 三目运算符
let result = a > b ? a : b //三目运算符,OC基本没有多少区别,只是书写格式不一样;
### guard 的基本使用
1. guard 要么用到if判断中; 要么用到函数当中;
2. 对于guard 判断,他的易读性比 if else 会好很多
当有很多的 if else 连串,镶嵌;,那么易读性就比较差;
### switch 语句的判断使用
1. swift 中 switch 和 OC中的差异
switch 分支后面的括号可以省略;
case结束之后可以不加break,也不会产生穿透;
补充点:
如果希望产生case穿透,需要在语句结束加上 fallthrough
在swift中的switch的case后面可以跟上,并且,多个条件以 , 分隔开;
OC中的switch只能判断整形
switch的特殊用法:
可以来判断浮点型; 字符串类型 + - * / 之类的 还可以判断区间;
区间类型有:
1.半开半闭区间;0..<10 0~9
2.闭区间 0…10 0~10;
### for循环遍历
普通的遍历:
for var i = 0; i < 10 i++
swift 的遍历:
区间遍历: 开区间
for i in 0..<10 {
}
闭区间:
for i in 0…10 {
}
如果一个标志符不需要使用;那么可以通过 _ 来代替
for _in 0..< 10
### while 循环
1. while 后面的()可以省略
2. 没有非0 (nil)即真
### 字符串的基本使用
1.1.定义不可变字符串 : 使用let修饰
2.定义可变字符串 var
2。遍历字符串中所有的字符
3.获取字符串的长度:
//获取字符串的长度
let length = str.characters.count
4.字符串与字符串之间的拼接
一般都是直接将两个字符串相加;
4.1字符串与其他标识符之间的拼接
一般用斜杠去分割开
4.2 拼接过程中的格式化:
### 截取的方式有两种
1.方式一: 将String类型转成NSString类型, 再进行截取
2.方式二: Swift原生方式进行截取\
###数组的基本使用:
不可变数组:
let array = ["why", "yz", "lmj", "lnj"]
可变数组:
var arrayM = Array()
var arrayM = [String]()
可变数组 ,由于数组是泛型集合,必须指定该数组中之后存放的元素;
## 数组的合并:
只有相同类型的数组元素可以进行合并
### 字典的基本使用
区别字典还是数组:
在字典的时候, 系统会根据[]中存放时键值对还是一个个元素来判断该[]是一个数组还是字典
字典的增删该查
// 系统类型的字典也不可以相加合并
字典:// 系统类型的字典也不可以相加合并
###元组的基本创建方
###可选类型的基本使用
只有可选类型才能赋值为nil
// Optional泛型集合 --> 必须明确执行该可选类型中存放值得类型
加 ! 号可以强制解包
取值的注意:
// 如果可选类型中是没有值的, 那么强制解包程序会崩溃
// 建议: 在对可选类型进行解包前, 最好先判断是否为nil
if name != nil {
print(name!)
print(name!)
print(name!)
print(name!)
print(name!)
}
.解包 : 可选绑定
系统判断name有没有值, 如果没有值, 直接跳过 {}
如果有值, 那么系统会对name就行强制解包, 并且将解包后的结果赋值给前面的tempName
if let tempName = name {
print(tempName)
print(tempName)
print(tempName)
}
if let name = name {
print(name)
print(name)
print(name)
print(name)
}