@buoge
2017-05-05T13:58:43.000000Z
字数 1241
阅读 1035
iOS
之前写过一次,后来忘记了,这回记录一下,还是用的少
http://www.jianshu.com/p/2d5bcff1a696
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)
}