1.可选类型的基本使用
//: Playground - noun: a place where people can play
import UIKit
/*
1.定义可选类型
1> Optional<String>
2> String?
2.给可选类型进行赋值
1> Optional("why")
2> "why"
3.从可选类型中取值
name! --> 强制解包
4.注意: 强制解包非常危险,所有先判断,再解包
5.语法: 可选绑定
if let name = name {
print(name)
}
*/
/*
class Person {
var name : String = nil
}
*/
//var str : String = "why"
// nil是一个特殊的类型, 跟String/Int
// let m : Int = "why" 错误写法
// var name : String = nil
// 在开发中,只有可选类型才能赋值为nil, 其它类型都不能赋值为nil
// 1.定义可变类型: 泛型集合
// var m : Int = 20 定义Int类型 Array<String> -> [String]
// 1> 定义方式一:
// var name : Optional<String> = nil
// 2> 定义方式二: 语法糖
var name : String? = nil
// 2.给可选类型赋值
//// 2.1.赋值方式一:
//name = Optional("why")
//
//// 2.2.赋值方式二:
name = "why"
// 3.取出可选类型中的值
// print(name)
// 从可选类型中取值: 可选类型 + ! --> 强制解包
// print(name!)
// 4.注意: 强制解包非常危险, 如果可选类型为nil,那么强制解包就会崩溃
if name != nil {
print(name!)
}
// 5.可选绑定(固定格式) : 该语法用于可选类型, 使我们使用起来可选类型更加方便
// 1> 判断name是否有值, 如果没有值,则直接不执行{}
// 2> 如果name有值,那么系统会自动对可选类型进行解包, 并且将解包后的结果赋值给前面的tempName
if let tempName = name {
print(tempName)
}
if let name = name {
print(name)
}
2.可选类型的应用
//: Playground - noun: a place where people can play
import UIKit
// 只要一个类型有可能为nil, 那么这个标识符的类型一定是一个可选类型
// 1.将字符串转成Int类型
let m : Double = 2.44
let n = Int(m)
let str : String = "123"
let num : Int? = Int(str) // 123/nil
// 2.根据文件名称:123.plist, 获取该文件的路径
let path : String? = Bundle.main.path(forResource: "123.plist", ofType: nil) // string/nil
// 3.将字符串转成NSURL
// 如果字符串中有中文,那么就是转化不成功, 返回结果 nil
// let url : NSURL? = NSURL(string: "http://www.520it.com") // URL/nil
let url = URL(string: "http://www.520it.com")
// 4.从字典中取出元素
let dict : [String : Any] = ["name" : "why", "age" : 18]
let value = dict["neme"] // Any/nil