Jac*_*ies 3 cocoa-touch objective-c string-comparison uitextfield ios
如何比较两个文本字段中的文本以查看它们是否相同,例如在"密码"和"确认密码"文本字段中?
if (passwordField == passwordConfirmField) {
//they are equal to each other
} else {
//they are not equal to each other
}
Run Code Online (Sandbox Code Playgroud)
Pie*_*nan 17
在Objective-C中你应该使用isEqualToString:,如下所示:
if ([passwordField.text isEqualToString:passwordConfirmField.text]) {
//they are equal to each other
} else {
//they are *not* equal to each other
}
Run Code Online (Sandbox Code Playgroud)
NSString是指针类型.当您使用==时,实际上是在比较两个内存地址,而不是两个值.text字段的属性是2个不同的对象,具有不同的地址.
所以==总会1回归false.
在Swift中,事情有点不同.Swift String类型符合Equatable协议.这意味着它通过实现运算符为您提供相等的功能==.使以下代码安全使用:
let string1: String = "text"
let string2: String = "text"
if string1 == string2 {
print("equal")
}
Run Code Online (Sandbox Code Playgroud)
如果string2被宣布为NSString?
let string2: NSString = "text"
Run Code Online (Sandbox Code Playgroud)
==由于在Swift 之间String和NSStringSwift 之间进行了一些桥接,使用遗骸是安全的.
1:有趣的是,如果两个NSString对象具有相同的值,编译器可以在引擎盖下进行一些优化并重新使用相同的对象.因此,它是可能的是== 会返回true在某些情况下.显然这不是你想要依赖的东西.
您可以通过使用NSString的isEqualToString:方法来执行此操作,如下所示:
NSString *password = passwordField.text;
NSString *confirmPassword = passwordConfirmField.text;
if([password isEqualToString: confirmPassword]) {
// password correctly repeated
} else {
// nope, passwords don't match
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
9517 次 |
| 最近记录: |