我的Swift学习之路(一)–-变量
我的Swift学习之路(一)--变量
因为公司要求我们员工进行双周技术分享,所以不得不将将学习的知识以书面的形式记录下来。当然既要完成这个硬性要求,也要在完成这个任务的同时有收获,在接下来的日子里,我会定期更新这个系列的文章,也非常欢迎看官们提出意见,我会在下一期改进!
Swift是一种新的编程语言,用于编写iOS和OS X应用。Swift结合了C和Objective-C的优点并且不受C兼容性的限制。Swift采用安全的编程模式并添加了很多新特性,这将使编程更简单,更灵活,也更有趣。Swift是基于成熟而且倍受喜爱得Cocoa和Cocoa Touch框架,他的降临将重新定义软件开发。
Objective-C和Swift的对比
-
在 Swift 中没有了
main.m,@UIApplicationMain是程序入口 -
在 Swift 中只有
.swift文件,没有.h/.m文件的区分 -
在 Swift 中,一个类就是用一对
{}括起的,没有@implementation和@end -
每个语句的末尾没有分号,在其他语言中,分号是用来区分不同语句的
- 在 Swift 中,一般都是一行一句代码,因此不用使用分号
-
与 OC 的语法快速对比
- 在 OC 中
alloc / init对应() - 在 OC 中
alloc / initWithXXX对应(XXX: ) - 在 OC 中的类函数调用,在 Swift 中,直接使用
. - 在 Swift 中,绝大多数可以省略
self.,建议一般不写,可以提高对语境的理解(闭包时会体会到) - 在 OC 中的 枚举类型使用
UIButtonTypeContactAdd,而 Swift 中分开了,操作热键:回车 -> 向右 -> . - Swift 中,枚举类型的前缀可以省略,如:
.ContactAdd,但是:很多时候没有智能提示 - 监听方法,直接使用字符串引起
- 在 Swift 中使用
print()替代 OC 中的NSLog
- 在 OC 中
1.变量和常量
定义
-
let定义常量,一经赋值不允许再修改 -
var定义变量,赋值之后仍然可以修改//: # 常量 //: 定义常量并且直接设置数值 let x = 20 //: 常量数值一经设置,不能修改,以下代码会报错 // x = 30 //: 使用 `: 类型`,仅仅只定义类型,而没有设置数值 let x1: Int //: 常量有一次设置数值的机会,以下代码没有问题,因为 x1 还没有被设置数值 x1 = 30 //: 一旦设置了数值之后,则不能再次修改,以下代码会报错,因为 x1 已经被设置了数值 // x1 = 50 //: # 变量 //: 变量设置数值之后,可以继续修改数值 var y = 200 y = 300
自动推导
- Swift能够根据右边的代码,推导出变量的准确类型
- 通常在开发时,不需要指定变量的类型
- 如果要指定变量,可以在变量名后使用:,然后跟上变量的类型
重要技巧:Option + Click 可以查看变量的类型
没有隐式转换!!!
- Swift 对数据类型要求异常严格
- 任何时候,都不会做隐式转换
如果要对不同类型的数据进行计算,必须要显式的转换
let x2 = 100
let y2 = 10.5
let num1 = Double(x2) + y2
let num2 = x2 + Int(y2)
let & var 的选择
- 应该尽量先选择常量,只有在必须修改时,才需要修改为
var - 在 Xcode7中,如果没有修改变量,Xcode 会提示修改为
let
2.Optional可选值
-
Optional是 Swift 的一大特色,也是 Swift 初学者最容易困惑的问题 -
定义变量时,如果指定是
可选的,表示该变量可以有一个指定类型的值,也可以是 nil -
定义变量时,在类型后面添加一个
?,表示该变量是可选的 -
变量可选项的默认值是
nil -
常量可选项没有默认值,主要用于在构造函数中给常量设置初始数值
//: num 可以是一个整数,也可以是 nil,注意如果为 nil,不能参与计算 let num: Int? = 10 -
如果 Optional 值是
nil,不允许参与计算 -
只有
解包(unwrap)后才能参与计算 -
在变量后添加一个
!,可以强行解包
注意:必须要确保解包后的值不是 nil,否则会报错
//: num 可以是一个整数,也可以是 nil,注意如果为 nil,不能参与计算
let num: Int? = 10
//: 如果 num 为 nil,使用 `!` 强行解包会报错
let r1 = num! + 100
//: 使用以下判断,当 num 为 nil 时,if 分支中的代码不会执行
if let n = num {
let r = n + 10
}
常见错误
unexpectedly found nil while unwrapping an Optional value
翻译
在[解包]一个可选值时发现 nil
?? 运算符
-
??运算符可以用于判断变量/常量的数值是否是nil,如果是则使用后面的值替代 -
在使用 Swift 开发时,
??能够简化代码的编写let num: Int? = nil let r1 = (num ?? 0) + 10 print(r1)

浙公网安备 33010602011771号