ios – Swift:为什么切换文本字段有效?

ios – Swift:为什么切换文本字段有效?,第1张

概述例如: func textFieldDidBeginEditing(textField: UITextField) { switch textField { case stateField: print("editing state") case countryField: print("editing country") defau 例如:

func textFIEldDIDBeginEditing(textFIEld: UITextFIEld) {    switch textFIEld {    case stateFIEld:        print("editing state")    case countryFIEld:        print("editing country")    default:        break    }}

是因为它在查看这些字段的地址吗?这是使用switch语句的正确方法吗?

解决方法 在引擎盖下,switch语句使用 pattern matching operator(〜=)来定义它可以做的比较.在你的情况下,它使用 this version:

@warn_unused_resultpublic func ~=<T : Equatable>(a: T,b: T) -> Bool

这需要两个相同具体类型的Equatable参数.在switch语句中,每个case都被传递给a,并且要打开的语句被传递给b.它返回的Bool定义是否应该触发案例,在这种情况下它将返回a == b的值.

UITextFIEld继承自NSObject,它通过isEqual符合Equatable.因此,为此运算符使用两个UITextFIEld是有效的,因此在交换机中使用它们是完全有效的.

作为其基本实现,isEqual只检查指针相等性.因此,您的switch语句确实只是检查您的给定UITextFIEld是否与给定案例完全相同.

您也可以考虑这样做:

if textFIEld == stateFIEld {    print("editing state")} else if textFIEld == countryFIEld {    print("editing country")} else {    // 'default' case}

这只是这样做(在NSObject继承的类的情况下):

if textFIEld.isEqual(stateFIEld)  {    print("editing state")} else if textFIEld.isEqual(countryFIEld) {    print("editing country")} else {    // 'default' case}

在这里使用一个开关是很好的用法 – 它使你的代码更加清晰,而不是链接许多if&否则如果一起陈述.

总结

以上是内存溢出为你收集整理的ios – Swift:为什么切换文本字段有效?全部内容,希望文章能够帮你解决ios – Swift:为什么切换文本字段有效?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1059318.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存