温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

05.swift ?可选类型

发布时间:2020-06-03 11:36:06 来源:网络 阅读:334 作者:光光ing 栏目:移动开发

import UIKit

// 类中所有的属性在对象初始化时,必须有初始化值

class Person : NSObject {

    var name : String?

    var view : UIView?

}


// 1.定义可选类型

// 1>普通定义可选类型的方式

// var name : Optional<String>

// 2>语法糖

var name : String?


// 2.给可选类型赋值

name = "why"



// 3.从可选类型中取值

// Optional("why")

print(name)

// 从可选类型中取值:可选类型!-->强制解包

//print(name!)



// 4.注意:如果可选类型中没有值,那么强制解包程序会崩溃

// 强制解包是非常危险的操作:建议在解包前先判断可选类型中是否有值

if name != nil {

    print(name!)

    

    print(name!)

    

    print(name!)

}



// 5.可选绑定

// 1> 判断name是否有值,如果没有值,则不执行{}.

// 2> 如果有值,则对可选类型进行解包,并且将解包后的值赋值给前面的常量

//if let tempName = name {

//    print(tempName)

//}


if let name = name {

    print(name)

    print(name)

    print(name)

    print(name)

}






/*

 可选值: optionals有两种状态:

 1.有值 2.没有值, 没有值就是nil

 */


//有值:

var optValue1: Int? = 9

//没有值:

var optValue2: Int?

var optValue3: Int? = nil


/*

 可选值可以利用if语句来进行判断

 */

var optValue4: Int?

if optValue4 != nil

{

    print(optValue4)

}else

{

    print(optValue4)

}


/*

 提取可选类型的值(强制解析)

 会将optValue中的整型值强制拿出来赋值给变量result, 换句话说就是告诉编译器optValue一定有值, 因为可选类型有两种状态有值和没有值, 所以需要告诉编译器到底有没有值

 需要注意的是如果强制解析optValue, 但是optValue中没有值时会引发一个运行时错误

 */

var optValue5: Int? = 9

var result1: Int = optValue5!

print(result1)


//报错:

var optValue6: Int?

var result2: Int = optValue6!

print(result2)


/*

 可选绑定:

 为了更安全的解析可选类型的值, 一般情况下使用可选绑定

 如果optValue没有值就不会做任何操作, 如果optValue有值会返回true并将optValue的值赋值给result执行大括号中的内容

 */

var optValue: Int? = 9

if let result3 = optValue

{

    print(result3)

}


可选类型的使用

let urlString = "http://www.520it.com"


// 1.普通写法

let url : NSURL? = NSURL(string: urlString)

if url != nil {

    let request = NSURLRequest(URL: url!)

}


// 可选绑定

if let url = url {

    let request = NSURLRequest(URL: url)

}


// 可选绑定的简介写法

if let url = NSURL(string: urlString) {

    let request = NSURLRequest(URL: url)

}


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI