最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

Swift Guard与If语句的区别详解_Guard语句好处外露

IOS admin 浏览 评论

Swift Guard是swift 2.0的时候推出的,网上有很多关于Guard语句的介绍,但是让人看了一知半解,Guard与If语句的区别在于它能够轻松的解包,避免if let语句的金字塔困扰,后面会用两个案例来介绍if语句造成的这种现象。

Swift什么时候会用到Guard语句呢?

如果你有一个带有一些UITextField元素或其他类型用户输入的视图控制器,你会立即注意到textField.text获取的值很可能为NULL空值,而你不想将空值提交到服务器后端,这个时候你就需要用if let做isEmpty是否为空的判断,你会想到有以下两种方式来解决:

方式一:用if let做判断,然后向后台服务器传递参数,如下所示,这就是一款正宗的金字塔语句:

func submit() {
    if let name = nameField.text {
        if let address = addressField.text {
            if let phone = phoneField.text {
                sendToServer(name: name, address: address, phone: phone)
            } else {
                show("no phone to submit")
            }
        } else {
            show("no address to submit")
        }
    } else {
        show("no name to submit")
    }
}

//向后台提交数据
func sendToServer(name: String, address: String, phone: String) {
  ...
}

方式二:用if...else语句来判断这些需要提交的字段是否为空,如下:

func submit() {
    let username = "";
    let addr = "";
    let pho = "";
	
    if let name = nameField.text {
	username = name;
    } else {
        show("no name to submit")
    }
	
    if let address = addressField.text {
	addr = address;
    } else {
	show("no address to submit")
    }
	
    if let phone = phoneField.text {
	pho = phone;
    } else {
	show("no phone to submit")
    }	
    
    //向后台提交数据
    sendToServer(name:username, address: addr, phone: pho)
}

func sendToServer(name: String, address: String, phone: String) {
  ...
}

如果按照上面那两种方式向后台提交数据的话,会显得很麻烦,这个就是因为语句没有解包,所以我们不得不把向后台提交数据的方法写在if let里面,或者用if else语句重新赋值给一些变量,然后在外面调用sendToServer()提交这些变量数据。

这个时候我们就可以直接用Swift Guard语句来解决,提交数据的方法就可以直接放在Guard判断方法外面了,如下:

func submit() {
    guard let name = nameField.text else {
        show("No name to submit")
        return
    }

    guard let address = addressField.text else {
        show("No address to submit")
        return
    }

    guard let phone = phoneField.text else {
        show("No phone to submit")
        return
    }
    //向后台提交数据,方法写在外面仍然能获取到判断之后的值!
    sendToServer(name: name, address: address, phone: phone)
}

func sendToServer(name: String, address: String, phone: String) {
  ...
}

经过swift Guard之后,我们的语句就相当于简洁了不少,而且不需要做额外的判断,有值就直接赋值了,非常的方便。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/object-c_ios/651.html
"文章很值,打赏犒劳作者一下"
微信号: Javaweb_engineer

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

与本文相关的文章

发表我的评论
取消评论

表情

您的回复是我们的动力!

  • 昵称 (必填)

网友最新评论