swift中的可选类型Optional?、解包!和隐式解包的可选类型的用法
来源:互联网 发布:利他林代购淘宝 编辑:程序博客网 时间:2024/06/06 02:50
可选类型(?)
/*
这个值要么存在, 并且等于x, 要么不存在
*/
举个例子
由于toInt方法可能会失败,因此它会返回一个可选的Int类型,而不同于Int类型。一个可选的Int类型被记为Int?,不是Int。问号表明它的值是可选的,可能返回的是一个Int,或者返回的值不存在。
这里写let possibleNumber = "123"let convertedNumber: Int? = possibleNumber.toInt()
可选类型类似于Objective-C中指针的nil值,但是nil只对类(class)有用,指对象不存在,而Swift 的 nil 不是指针,它代表特定类型的值不存在。任何类型的可选类型都能赋值为 nil,而不仅限于对象类型。并且更安全。
var responseCode: Int? = 404 //要么存在, 且值为404responseCode = nil //要么不存在, 可以赋值为nil表示不存在
swift中“nil”的使用:
/*
1.Swift里面nil 不能用于非可选类型
2.如果代码中的常量或者变量需要适配值不存在的情况, 务必将它声明为恰当的可选类型
3.如果定义的可选类型的对象不提供默认值, 该对象将自动设为nil
*/
//var strValue = nil //错误var strValue: String? = "hello"
//let hashValue = strValue.hashValue //错误。对于Optional值,不能直接进行操作let hashValue = strValue?.hashValue //问号的意思是询问可选量是否响应后面这个方法
/*
总结 ? 的使用场景
1.声明Optional变量
2.用在Optional值操作中,用来判断是否响应后面的操作
*/
解包(!)
/*
如果确定一个可选类型的对象的值一定存在,那么我们使用 !进行解包获取它的值,或者使用Optional Binding。
*/
举个例子
let possibleString: String? = "An optional string"println(possibleString!) //解包, 我确定possibleString的值一定存在, 不需要每次都验证他的值是否存在let stringValue = possibleString!.hashValue //必须解包,才能获取可选量的属性或者方法《==》//Optional Binding, 等价于上面一行if let sValue = possibleString { let stringValue = sValue.hashValue}
隐式解包的可选类型
/*
你可以把 隐式解包可选类型 当成对每次使用的时候自动解包的可选类型。即不是每次使用的时候 在变量/常量后面加!,而是直接在定义的时候加!
*/
let assumedString: String! = "An implicitly unwrapped optional string"println(assumedString)println(assumedString.hashValue)
/*
总结!的使用场景
1.强制对 可选量 进行解包
2.声明 隐式解包的可选类型的时候, 一般用于类中的属性
*/
- swift中的可选类型Optional?、解包!和隐式解包的可选类型的用法
- Swift中的可选类型(Optional)以及?和!的用法详解
- Swift-可选类型(Optional)以及解包
- swift变量的可选(Optional)类型
- Swift:可选类型(Optional)
- Swift-Optional(可选类型?!)
- Swift:Optional可选类型
- swift-可选类型Optional
- swift 可选类型的解包
- Swift 中的可选类型(Optional)
- swift 学习计划(一) 解包、隐式解包的可选类型
- Swift开发 可选类型Optional
- 10.可选类型optional(解包和绑定)
- swift中的可选类型的实现原理
- Swift可选类型的使用
- Swift:可选类型的含义
- Swift 可选类型 ?和!
- Swift学习 隐式解包的可选类型
- 响应式设计的现状与趋势
- Oracle表空间用户数据导出
- linux yum命令详解
- js反射机制
- 基本控件:UIActivityIndicatorView
- swift中的可选类型Optional?、解包!和隐式解包的可选类型的用法
- LeetCode Path Sum
- B-tree详解
- 【Android】获取手机的相关硬件信息
- 如何查看MyEclipse包含的Eclipse的版本号
- 到底谁才是真正的隐形战友——开源软件和OpenSSL的真实故事
- 两个日期的时间差
- OSX平台下跨平台编译Go程序(交叉编译)
- iOS Programming 学习笔记 - 04 UITableView编辑模式