Swift学习之路-day01

Swift学习之路-day01

[toc]

本人iOS开发,使用的是OC语言开发,最近利用空闲时间学习Swift,并整理一下学习进度及学习笔记

常亮与变量

在iOS中,定义一个变量要区分可变与不可变之分,而OC语言里区分可变与不可变是NSNSMutable来区分,如NSStringNSMutableStringNSArrayNSMutableArray
而在Swift中是用letvar区分
let 定义一个常量
var 定义一个变量

可选项

Optional是Swift的一大特色,在OC中是没有的。它的意义是定义一个可选类值,这个值可能没有值,也可能有一个类值。
如定义一个Int类型的值,它可能为nil,也可能有值
在定义变量时,如果指定是可选的,表示变量是一个可选类型的值,也可以是nil
定义变量时,在类型后面添加一个,表示变量是可选的
变量可选的默认值是nil

let y: Int? = 20        

或者

var x:Int?
x = 10
x = 100

?用来定义一个可选的Int类型,可能没有值,也可能有一个整数

!强行解包 - 从可选之中强行获取对应的非空值,如果真的是nil 就会崩溃,崩溃信息如下:
奔溃信息

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

定义 可选项使用?
解包使用 !,准备计算

let y:Int?

只是定义了一个y 没有初始化
let y:Int? = 20 则是初始化,给常量设置数值,初始化的工作能做一次

var x:Int?

定义了一个x,可选默认为 nil

swift 三目运算符

??是一个简单的三目
如果有值,则使用值
如果没有值,使用??后面的值替代

let name: String? = "老王" //"老王"
print((name ?? "") + "你好")

print(name ?? ""+"你好”)

??操作符号的优先级’底’,在使用是最好加上()包一下

guard let & if let 的技巧

if let 连用,判断对象的值是否为nil,{}内一定有值,可以直接使用,不需要解包
常量是可选项(Optional),if let判断后不需要解包(!),{ }内一定有值
guard let swift2.0推出,如果用if let 凭空多了一层分支,guard let是降低分支层次的办法

guard let

使用同名的变量接收值,在后续使用的都是非空值,不需要解包

if let

同样使用户相同名的变量接收值,非空值仅在{}内使用,

限定作用域,oc代码中可以适当地加{}来限定变量的作用域。
{}包装代码 ,()是表示执行

UILabel *myLabel = ({
    UILabel *l = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 120, 160)];
    l.text = @"hello world";
    [self.view addSubview:l];
    l;
});

注意

swift语言中一行代码的结束不用“;”(分号)结束,而是直接回车结束
oc语言一个操作代码结束则需要“;”(分号)结束
oc中的强转:

(int)a

swift的强转:

Int(a)
-------------本文结束感谢您的阅读-------------