Swift3.0-可选值

Swift3.0 - 真的很简单
Swift3.0 - 数据类型
Swift3.0 - Array
Swift3.0 - 字典
Swift3.0 - 可选值
Swift3.0 - 集合
Swift3.0 - 流控制
Swift3.0 - 对象和类
Swift3.0 - 属性
Swift3.0 - 函数和闭包
Swift3.0 - 初始化和释放
Swift3.0 - 协议protocol
Swift3.0 - 类和结构体的区别
Swift3.0 - 枚举
Swift3.0 - 扩展
Swift3.0 - 下标
Swift3.0 - 泛型
Swift3.0 - 异常错误
Swift3.0 - 断言
Swift3.0 - 自动引用计数(strong,weak,unowned)
Swift3.0 - 检测API
Swift3.0 - 对象的标识
Swift3.0 - 注释
Swift3.0 - 元类型
Swift3.0 - 空间命名
Swift3.0 - 对象判等
Swift3.0 - 探究Self的用途
Swift3.0 - 类簇
Swift3.0 - 动态调用对象(实例)方法
Swift3.0 - 文本输出
Swift3.0 - 黑魔法swizzle
Swift3.0 - 镜像
Swift3.0 - 遇到的坑

  • ?的用法
let optionalSquare: Square? = Square(sideLength: 2.5, name: "optional square")
let length = optionalSquare?.sideLength

什么时候定义可选值

当你创建的变量有可能会出现nil的时候

看第二个句代码为什么那样写,如果不那样写会怎么?

如果我们第一句代码创建的结果为nil,在获取它里面的属性sideLength的时候我们加了一个? 系统会首先确认第一个是不是nil,如果是nil,则直接返回一个nil给length,如果不是空值,则获取sideLength的值赋值给length

加入我们的解封第一个对象

  let length = optionalSquare!.sideLength

如果optionalSquare不是nil还好,没有任何影响,如果为nil怎系统直接崩溃,相当于这样 let sideLength = nil ,swift 不允许我们使用nil赋值给一个非可选值

推荐阅读更多精彩内容