Swift--可选类型的简单介绍以及常见使用场景
2017-02-22 本文已影响23人
Mark_Guan
在OC
开发中,如果一个变量暂时不使用,可以赋值为0(基本属性类型)
或者赋值为空(对象类型)
在swift
开发中,nil
也是一个特殊的类型.因为和真实的类型不匹配是不能赋值的(swift是强类型语言),但是开发中赋值nil,在所难免.因此推出了可选类型
定义可选类型
// 注意:name的类型是一个可选类型,但是该可选类型中可以存放字符串.
// 写法一:定义可选类型
let name : Optional<String> = 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)
}