1.可選類型的基本使用
//: Playground - noun: a place where people can play
import UIKit
/*
1.定義可選類型
1> Optional<String>
2> String?
2.給可選類型進(jìn)行賦值
1> Optional("why")
2> "why"
3.從可選類型中取值
name! --> 強(qiáng)制解包
4.注意: 強(qiáng)制解包非常危險,所有先判斷,再解包
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
// 在開發(fā)中,只有可選類型才能賦值為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)
// 從可選類型中取值: 可選類型 + ! --> 強(qiáng)制解包
// print(name!)
// 4.注意: 強(qiáng)制解包非常危險, 如果可選類型為nil,那么強(qiáng)制解包就會崩潰
if name != nil {
print(name!)
}
// 5.可選綁定(固定格式) : 該語法用于可選類型, 使我們使用起來可選類型更加方便
// 1> 判斷name是否有值, 如果沒有值,則直接不執(zhí)行{}
// 2> 如果name有值,那么系統(tǒng)會自動對可選類型進(jìn)行解包, 并且將解包后的結(jié)果賦值給前面的tempName
if let tempName = name {
print(tempName)
}
if let name = name {
print(name)
}
2.可選類型的應(yīng)用
//: Playground - noun: a place where people can play
import UIKit
// 只要一個類型有可能為nil, 那么這個標(biāo)識符的類型一定是一個可選類型
// 1.將字符串轉(zhuǎn)成Int類型
let m : Double = 2.44
let n = Int(m)
let str : String = "123"
let num : Int? = Int(str) // 123/nil
// 2.根據(jù)文件名稱:123.plist, 獲取該文件的路徑
let path : String? = Bundle.main.path(forResource: "123.plist", ofType: nil) // string/nil
// 3.將字符串轉(zhuǎn)成NSURL
// 如果字符串中有中文,那么就是轉(zhuǎn)化不成功, 返回結(jié)果 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