05-Swift可选类型

可选类型(optionals)#

使用可选类型用来处理可能缺失的情况。
有值,等于x、没有值

查看数据类型使用 option+鼠标左键

let URL = NSURL(string: "http://www.baidu.com/") // 被推测为NSURL?类型
let str: String? = "Swift"// 被推测为String?类型

//如果你声明一个可选常量或者变量但是没有赋值,它们会自动被设置为 nil 
let a:Int? 
直接打印结果.png

直接打印结果表明这是可选值,可以有值,可以为nil
注意:nil在Swift中是一个确定的值,用来表示值缺失

可选项判断#

1>使用if语句判断(需要强制解析)

if (URL != nil){
    print(URL!)
}

2>使用if let
if let:确保有值,才会进入分支

if let myUrl = URL{
    print(myUrl)
}

强制解析#

当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号( ! )来获取值。这个惊叹号表示“我知道这个可选有值,请使用它。”这被称为可选值的强制解析(forced unwrapping)

print(URL!)
print(str!)
不能print(a!)//会报错  fatal error: unexpectedly found nil while unwrapping an Optional value
// a没有赋值,也就不包含值

注意:使用 ! 来获取一个不存在的可选值会导致运行时错误。使用 ! 来强制解析值之前,一定要确定可选包含一 个非 nil 的值。

if let#

if let :确保有值,才会进入分支

var aName: String? = "ningcol"
// var aName: String? = nil
var aAge: Int? = 18

if let name = aName,let age = aAge {
    print(name + String(age))
}
// 可以对值进行修改
if var name = aName,let age = aAge {
    name = "lisi"
    print(name + String(age))
}

guard#

guard与if let相反,表示一定有值,没有就直接返回

let oName: String? = "张三"
let oNum: Int? = 18

guard let name = oName else { 
    print("name 为空") 
    return
}

guard let num = oNum else { 
    print("num 为空") 
    return
}

隐式解析可选类型#

可以把隐式解析可选类型当成对每次使用的时候自动解包的可选类型。即不是每次使用的时候在变量/常量后面加!,而是直接在定义的时候加!

// 非隐式解析可选类型
let possibleString: String? = "An optional string"
let forcedString: String = possibleString!//需要感叹号来获取值

// 隐式解析可选类型 
// 隐式解析是指可以确认该可选类型在赋值后一直有值
let assumedString: String! = "An implicitly unwrapped optional string"
let implicitString: String = assumedString//不需要感叹号
// 注:如果一个变量之后可能变为 nil 的话,请不要使用隐式解析可选类型,若需要在变量的生命周期中判断是否为 nil 的话,请使用普通可选类型
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、范型范型所解决的问题 函数、方法、类型:类,结构体,枚举,元组类型,协议参数,返回值,成员函数参数,成员属性类...
    我是小胡胡123阅读 4,328评论 0 1
  • 基础部分(The Basics) 当推断浮点数的类型时,Swift 总是会选择Double而不是Float。 结合...
    gamper阅读 5,211评论 0 7
  • Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。然而,如果你有 C 或...
    XLsn0w阅读 4,421评论 2 1
  • Swift 介绍 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 ...
    大L君阅读 8,556评论 3 25
  • 一个风和日丽的周末,我参加了一次大型的放生活动。天刚蒙蒙亮,我和佛友们就出发了,迎着和煦的春风,看着疏林里飞奔的红...
    碧潭止水阅读 2,865评论 0 0