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:为什么切换文本字段有效?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)