1.if let / var 連用語法
//MARK: if let / var 連用語法,目的就是為了判斷值
func demo(name :String? ,age :Int?)
{
//事例1.用if語法判斷值是否為空
if name != nil && age != nil
{
//強行解包有風險
//print(name! + String(age!))
}
else
{
//print("name或者age為nil")
}
//事例2.使用if let / var 進行判斷值是否為空
if var name = name,let age = age
{
//非空的name和age僅在{}中有用
//使用變量Name接受name參數,并改變值
Name = "老李"
//進入分支后name和age一定有值 不需要解包 `!`
print("姓名:" + (name) + " 年齡:" + String(age))
}
else
{
print("name或者age為nil")
}
}
事例1:
在viewDidLoad中調用方法,并傳入兩個參數,輸出結果
調用:demo(name: "張三", age: 27)
結果:姓名:老李 年齡:27
事例2:
在viewDidLoad中調用方法,并傳入nil
調用:demo(name: "張三", age: nil)
結果:name或者age為nil
2.guard let語法
//MARK: - guard
func demo(nName:String? ,nAge:Int?)
{
//guard let 和 if let 相反 當值為空時執行
//使用同名變量接收值,在后續使用中都是非空值
guard let nName = nName , nAge = nAge else
{
print("nName 或者 nAge為 nil")
return
}
//代碼運行至此,表示一定有值
print("姓名:" + (nName) + " 年齡:" + String(nAge))
}
事例代碼:取自王巍demo
//逐級判斷,一但為nil就退出分支
if let JsonDic = json as? NSDictionary,
menu = jsonDic["munu"] as? [String: AnyObject],
popup = menu["popup"],
popupDic = popup as? [String : AnyObject],
menuItems = popupDic["menuitem"],
mtnuItemsArr = menuItems as? [AnyObject],
item0 = menuItemsArr[0] as? [String : AnyObject],
value = item0["value"]
{
print(value)
}
//從左到右逐級判斷,只要為nil直接退出分支
if let value = JSON(json)["menu"]["popup"]["menuitem"][0]["value"].string
{
print(value)
}