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()
     }
}

就会报错,错误如下:

Paste_Image.png

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

在声明时候赋值.png
在初始化方法里赋值.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班.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • ?? 操作符的用法
    未知代码阅读 274评论 0 0
  • 《昨日与中立兄小浊》 金风催铁骑, 驾车去它乡。 晁兄乃诤友, 且看菊花黄。 昔年何英飒, 相望皆沧桑。 不便常聚...
    清风明月冯耀杰阅读 172评论 0 3
  • 假期很快就来了,在我们的期盼和惧怕之中。 哥几个陆续离校了,脸上没有往年的喜悦,反而有些沉郁。或许,大家心里都明白...
    韦小天阅读 266评论 0 0
  • 我们草原去 青色的草原上 跑着棕色的骏马 金色的太阳 从草原升起 照亮了草原照亮了马尾 我们草原去 我们草原去
    木木青苔阅读 161评论 0 0