美文网首页Swift
05-Swift可选类型

05-Swift可选类型

作者: 诠释残缺 | 来源:发表于2017-04-05 17:51 被阅读0次

可选类型(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 的话,请使用普通可选类型

相关文章

  • 05-Swift可选类型

    可选类型(optionals)# 使用可选类型用来处理可能缺失的情况。有值,等于x、没有值 查看数据类型使用 op...

  • Swift 可选项

    可选项,也叫做可选类型。定义为可选类型后,可以设置为 nil 在类型名后面加个问号?来定义可选类型 可选类型如果不...

  • Swift3.0基本语法(五)——封包和拆包

    一、可选类型(Optional) 相对OC而言,Swift增加一种可选类型(Optional),可选类型...

  • swift语法--04可选类型

    swift语法--可选类型 可选类型 什么是可选类型: 一个变量可以有值也可以没有值, 我们就称之为可选类型 语法...

  • swift中的可选链

    可选链 可选项获取其属性,其属性本来不是可选类型,但也变成了可选类型。

  • Swift 可选类型Optional

    Swift 可选类型Optional [TOC] 前言 本将以Swift中的可选类型为入口,介绍: 可选类型的底层...

  • Swift 中的可选和拆包

    本文内容结构如下 可选操作以及可选类型 强制拆包 可选绑定 可选操作以及可选类型 var strValue:Str...

  • Swift:(五)可选类型

    Swift 可选(Optionals)类型 Swift 的可选(Optional)类型,用于处理值缺失的情况。可选...

  • Swift:基础(五)可选类型

    Swift 可选(Optionals)类型 Swift 的可选(Optional)类型,用于处理值缺失的情况。可选...

  • Optional可选类型

    1、可选类型的声明 在声明常量或者变量时,在类型的后面加问号(?),即表示它是可选类型。声明可选变量格式如下(可选...

网友评论

    本文标题:05-Swift可选类型

    本文链接:https://www.haomeiwen.com/subject/jakxattx.html