问题描述
之前是搞java,平常判断都是用的if和else进行判断,这样稍微复杂的逻辑就要嵌套好多层
swift 1.x版本可以用if let稍微解决这个问题,swift2.x 则有了更好的解决方法(guard),下面就用例子分别说明
例子
假设我们要根据本地推送通知中的type属性进行不同的处理,
三种不同的实现方式
只用if-else
1 | func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) { |
if-let组合
1 | func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) { |
guard-let-else
1 | func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) { |
总结
综上 我们可以发现第二种方法相对于第一种方法嵌套关系虽没有改变,但是精简了判断是否为空的过程
第三种方法相对于第二种方法就没了复杂的嵌套关系, guard可以理解为if的意思,但if中定义的变量只能在{}中使用,guard中定义的变量则可以在同级使用