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) }

    推荐阅读