一直使用objective-c进行开发,今天终于下定决心好好学习一下swift。学习后还是感觉到swift在使用上的方便之处。于是在此做一个笔记加深记忆。
常量与变量
声明基本数据类型
在objective-c中声明变量格式: 类型 变量名 = 值
int a = 10;
在swift中 : var/let 变量名 : 类型 = 值
其中var代表变量,let代表常量。常量的是不可以不修改的。
var a : Int = 2
a = 10;//正确
let b : Int = 1
b = 10; //错误
值得一提的是let声明的常量在内存上保存的地址不能发生改变,所以我们无法对let常量重新赋值。
或许你已经注意到了,这样声明swift貌似比oc更加麻烦,但swift厉害之处就在于它可以推测类型。
let a = 2 //系统自动转换为Int类型
let b = 2.23 //系统自动转换为Double类型
基本类型转换
在objective中,当我们使用两个不同类型的变量运算时,系统会采取隐式转换将类型统一。
int a = 1;
float b = 2.2;
int c = a + b; // c=3
但在swift中,系统并不会隐式转换,所以当两个不同类型的变量运算时,编译器会报错。我们需要手动的去做类型转换。
let x :Int = 1
let y :Double = 2.31
let z = x + Int(y)
我们需要使用: 类型(变量)
的方式来进行类型转换
非基本数据类型
声明一个UiView的对象,并修改背景颜色
objective-c中
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)];
view.backgroundColor = [UIColor redColor];
swift中:
let rect = CGRect(x: 0, y: 0, width: 100, height: 100)
let view : UIView = UIView(frame: rect)
view.backgroundColor = UIColor.brown
可以看到swift中不支持以前的CGRectMake方法,而使用CGRect(参数名:参数...)的方式初始化,同样在初始化view的时候也是调用UIView:(参数名:参数...)的方式代替oc中的initWithFrame:函数
条件判断语句
与objective-c最大的不同是,swift在做条件判断的时候不支持(非0/nil)这样的判断。
let i = 1
if i { //这样是不行的
}
if i == 1 { //这样才可以
}
guard关键字
guard关键是swift新引入的一种写法,它必须和else连用
let age = 20;
func online(age : Int) {
guard age > 18 else {
print("error")
return
}
print("ok")
}
如果满足条件,会直接跳过{}执行后面代码,如果不满足则会执行else里的内容。使用它的好处在于可以让我们的代码可读性更高。
switch关键字
和objective-c不同
1.swift中不需要在case中写break。
2.可以支持多个条件的判断
3.支持区间
let age = 20;
switch age {
case 2:
print("小孩子")
fallthrough
case 10,19:
print("少年郎")
case 20...30:
print("工作狗")
default:
print("有问题")
}
case1.如果希望执行完case后继续执行,可以添加fallthrough
关键字
case2.使用,分割来表示多个条件判断
case3.判断是否在区间 20...30 等于 x >= 20 && x <= 30,也支持半开半闭区间20..<30 等于x > 20 && x <30
循环语句
for循环是我们使用得最多的循环语句了,在swift3.0以后for循环只支持区间遍历
for i in 0..<10 {
print(i)
}
//oc中
for (int i = 0; i < 10; i++) {
print(i)
}
当循环体内不需要使用i时,我们还可以用_代替。
for _ in 0..<10 {
print("遍历10次")
}
while循环和oc种差不多,只是省略了判断语句的括弧
var num = 1
while num <= 10{
num += 1 //swift中不支持使用++运算符
print(num)
}
这里有个注意点,swift中不支持使用++运算符。
do...while循环在swift中使用repeat关键字代替do
var num = 10
repeat {
num -= 1
print(num)
} while num > 0