Swift基础-可选项

如果你已经对Swift精通,请略过此文,不惜勿喷,谢谢!
Swift在我心目中的地位: Swift是一门将要替代OC,并且正在替代OC,必然要替代OC的语言;作为一个iOS开发者,如果不想被淘汰,就必须要学Swift;
--


一 认识可选项
Swift里边有一个特殊的存在--可选项,要知道在Swift中String,Array等对象类型的变量不能复制为nil,会报错,错误如下:


Paste_Image.png

那么怎么把一个对象赋值为空呢,这就需要用到可选项了,如下代码就不会报错了:


Paste_Image.png

可以看到,定义可选项变量并不复杂,只要在类型后边加一个"?"就可以了;
二 什么时候需要声明可选项
总体的原则是: 有需要将对象赋值为空的时候需要用到可选项

例如定义模型的时候可以用可选项,代码如下:

import UIKit

class Model: NSObject {

     var name:String?
     var age:Int?
     var classes:Int?

     override init() {
          super.init()
     }
}

如果不用可选项,代码如下:

import UIKit

class Model: NSObject {

     var name:String
     var age:Int
     var classes:Int

     override init() {
          super.init()
     }
}

就会报错,错误如下:

Swift基础-可选项_第1张图片
Paste_Image.png

也就是需要给 name,age,classes赋一个初始值,解决报错有以下两种办法:

Swift基础-可选项_第2张图片
在声明时候赋值.png
Swift基础-可选项_第3张图片
在初始化方法里赋值.png

三 使用可选项
在使用的时候需要强制解包,解包运算符是"!",例如

let model = Model()
    model.age = 10
    model.name = "老王"
    model.classes = 2
    print("我的名字叫" + model.name! + ",今年" +  
    String(describing: model.age!) + "岁,我的班级是5年级" + 
    String(describing: model.classes!) + "班." )

打印结果是:我的名字叫老王,今年10岁,我的班级是5年级2班.

你可能感兴趣的:(Swift基础-可选项)