[关闭]
@buoge 2017-05-05T13:58:43.000000Z 字数 1241 阅读 1040

f let / var 连用语法

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)
}
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注