A-A+

Swift if let / var 连用语法与guard let 语法笔记

博客主机

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)
    }
标签:

给我留言

Copyright © ios教程,苹果粉丝,苹果资讯,ios入门教程,ios学习,ios程序员,ios视频教程,ios粉丝网 保留所有权利.   Theme  Ality

用户登录