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

你可能感兴趣的:(Swift--可选类型的简单介绍以及常见使用场景)