Swift--可选类型的简单介绍以及常见使用场景
【Swift--可选类型的简单介绍以及常见使用场景】在OC
开发中,如果一个变量暂时不使用,可以赋值为0(基本属性类型)
或者赋值为空(对象类型)
在swift
开发中,nil
也是一个特殊的类型.因为和真实的类型不匹配是不能赋值的(swift是强类型语言),但是开发中赋值nil,在所难免.因此推出了可选类型
定义可选类型
// 注意:name的类型是一个可选类型,但是该可选类型中可以存放字符串.
// 写法一:定义可选类型
let name : Optional = nil// 写法二:定义可选类型,语法糖(常用)
let name : String? = nil
可选绑定
// 可选绑定(固定格式) :系统帮我们做了两件事情
// 1> 判断后面的name是否有值, 如果没有值,则直接跳过{}
// 2> 如果name有值,那么系统会自动对可选类型进行解包, 并且将解包后的结果赋值给前面的name
if let name = name {
print(name)
}
可选链
// ?.就是可选链:
// 系统会自动判断该可选类型是否有值,如果有值,则解包, 如果没有值, 则赋值为nil。
// 注意: 可选链条获取的值,一定是一个可选类型
if let price = p.dog?.toy?.price { // Double/nil
print(price)
}
例子
// 1.根据一个字符串, 创建URL
if let url = URL(string: "http://www.baidu.com/中文") {
URLRequest(url: url)
}// 2.根据一个文件的名称, 获取文件的路径
let path : String? = Bundle.main.path(forResource: "demo1.plist", ofType: nil)
if let path = path {
NSArray(contentsOfFile: path)
}// 3.从字典中取值;
let dict : [String : Any] = ["name" : "gzp", "height" : 1.88, "age" : 18]
if let name = dict["name"] as? String {
print(name.characters.count)
}
推荐阅读
- mysql|InnoDB数据页结构
- 接口|axios接口报错-参数类型错误解决
- 带你了解类型系统以及flow和typescript的基本使用
- 史前艺术的审美类型「清央美术」
- 认识图表
- MySQL|MySQL 5.7参考手册_11.1 数据类型概览
- 人的四种气质类型和四种血型性格辨析
- 二、Redis的五种常用数据类型
- js类型转换和内存
- 小程序开发|小程序开发 - 页面传值url类型