如何比较两个文本字段中的文本以查看它们是否相同,例如“密码”和“确认密码”文本字段?
if (passwordField == passwordConfirmField) {
//they are equal to each other
} else {
//they are not equal to each other
}
答案 0 :(得分:18)
在Objective-C中,您应该使用isEqualToString:
,如下所示:
if ([passwordField.text isEqualToString:passwordConfirmField.text]) {
//they are equal to each other
} else {
//they are *not* equal to each other
}
NSString
是指针类型。当您使用==
时,实际上是在比较两个内存地址,而不是两个值。字段的text
属性是2个不同的对象,具有不同的地址
因此==
将始终 1 返回false
。
在Swift中,事情有点不同。 Swift String
类型符合Equatable
协议。这意味着它通过实现运算符==
为您提供相等性。使以下代码安全使用:
let string1: String = "text"
let string2: String = "text"
if string1 == string2 {
print("equal")
}
如果string2
被声明为NSString
会怎样?
let string2: NSString = "text"
由于在Swift中==
和String
之间进行了一些桥接,因此使用NSString
仍然是安全的。
1:有趣的是,如果两个NSString
对象具有相同的值,编译器可能在引擎盖下进行一些优化并重新使用相同的对象。所以可能 ==
可以在某些情况下返回true
。显然,这不是你想要依赖的东西。
答案 1 :(得分:5)
你可以通过使用NSString的isEqualToString:方法来实现这一点,如下所示:
NSString *password = passwordField.text;
NSString *confirmPassword = passwordConfirmField.text;
if([password isEqualToString: confirmPassword]) {
// password correctly repeated
} else {
// nope, passwords don't match
}
希望这有帮助!