前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swift中的if let guard

Swift中的if let guard

作者头像
码客说
发布2019-10-22 14:14:43
1.7K0
发布2019-10-22 14:14:43
举报
文章被收录于专栏:码客

问题描述

之前是搞java,平常判断都是用的if和else进行判断,这样稍微复杂的逻辑就要嵌套好多层

swift 1.x版本可以用if let稍微解决这个问题,swift2.x 则有了更好的解决方法(guard),下面就用例子分别说明

例子

假设我们要根据本地推送通知中的type属性进行不同的处理,

三种不同的实现方式

只用if-else

代码语言:javascript
复制
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
    print("接受本地推送")
    if(notification.userInfo != nil){
        let userinfo = notification.userInfo!;
        if(userinfo["type"] != nil){
            let type = userinfo["type"] as! String;
            if(type == "考勤"){
                
            }else{
            
            }
        }
    }
}

if-let组合

代码语言:javascript
复制
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
    print("接受本地推送")
    if let userInfo = notification.userInfo{
        if let type = userInfo["type"]{
            if((type as! String) == "考勤"){
                
            }else{
                
            }
        }
    }
}

guard-let-else

代码语言:javascript
复制
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
    print("接受本地推送")
    guard let userInfo = notification.userInfo else{
        return;
    }
    
    guard let type = userInfo["type"] else{
        return;
    }
    
    if((type as! String) == "考勤"){
        
    }else{
    
    }
}

总结

综上 我们可以发现 第二种方法相对于第一种方法嵌套关系虽没有改变,但是精简了判断是否为空的过程

第三种方法相对于第二种方法就没了复杂的嵌套关系, guard可以理解为if的意思,但if中定义的变量只能在{}中使用,guard中定义的变量则可以在同级使用

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-02-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述
  • 例子
    • 只用if-else
      • if-let组合
        • guard-let-else
          • 总结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档