如果你已經(jīng)對(duì)Swift精通,請(qǐng)略過此文,不惜勿噴,謝謝!
Swift在我心目中的地位: Swift是一門將要替代OC,并且正在替代OC,必然要替代OC的語(yǔ)言;作為一個(gè)iOS開發(fā)者,如果不想被淘汰,就必須要學(xué)Swift;
--
一 認(rèn)識(shí)可選項(xiàng)
Swift里邊有一個(gè)特殊的存在--可選項(xiàng),要知道在Swift中String,Array等對(duì)象類型的變量不能復(fù)制為nil,會(huì)報(bào)錯(cuò),錯(cuò)誤如下:
Paste_Image.png
那么怎么把一個(gè)對(duì)象賦值為空呢,這就需要用到可選項(xiàng)了,如下代碼就不會(huì)報(bào)錯(cuò)了:
Paste_Image.png
可以看到,定義可選項(xiàng)變量并不復(fù)雜,只要在類型后邊加一個(gè)"?"就可以了;
二 什么時(shí)候需要聲明可選項(xiàng)
總體的原則是: 有需要將對(duì)象賦值為空的時(shí)候需要用到可選項(xiàng)
例如定義模型的時(shí)候可以用可選項(xiàng),代碼如下:
import UIKit
class Model: NSObject {
var name:String?
var age:Int?
var classes:Int?
override init() {
super.init()
}
}
如果不用可選項(xiàng),代碼如下:
import UIKit
class Model: NSObject {
var name:String
var age:Int
var classes:Int
override init() {
super.init()
}
}
就會(huì)報(bào)錯(cuò),錯(cuò)誤如下:
Paste_Image.png
也就是需要給 name,age,classes賦一個(gè)初始值,解決報(bào)錯(cuò)有以下兩種辦法:
在聲明時(shí)候賦值.png
在初始化方法里賦值.png
三 使用可選項(xiàng)
在使用的時(shí)候需要強(qiáng)制解包,解包運(yùn)算符是"!",例如
let model = Model()
model.age = 10
model.name = "老王"
model.classes = 2
print("我的名字叫" + model.name! + ",今年" +
String(describing: model.age!) + "歲,我的班級(jí)是5年級(jí)" +
String(describing: model.classes!) + "班." )
打印結(jié)果是:我的名字叫老王,今年10歲,我的班級(jí)是5年級(jí)2班.