Compare the text of two text fields

十年热恋 提交于 2019-12-29 01:43:07

问题


How do you compare the text in two text fields to see if they are the same, such as in "Password" and "Confirm Password" text fields?

if (passwordField == passwordConfirmField) {

    //they are equal to each other

} else {

    //they are not equal to each other

}

回答1:


In Objective-C you should use isEqualToString:, like so:

if ([passwordField.text isEqualToString:passwordConfirmField.text]) {
    //they are equal to each other
} else {
    //they are *not* equal to each other
}

NSString is a pointer type. When you use == you are actually comparing two memory addresses, not two values. The text properties of your fields are 2 different objects, with different addresses.
So == will always1 return false.


In Swift things are a bit different. The Swift String type conforms to the Equatable protocol. Meaning it provides you with equality by implementing the operator ==. Making the following code safe to use:

let string1: String = "text"
let string2: String = "text"

if string1 == string2 {
    print("equal")
}

And what if string2 was declared as an NSString?

let string2: NSString = "text"

The use of == remains safe, thanks to some bridging done between String and NSString in Swift.


1: Funnily, if two NSString object have the same value, the compiler may do some optimization under the hood and re-use the same object. So it is possible that == could return true in some cases. Obviously this not something you want to rely upon.




回答2:


You can do this by using the isEqualToString: method of NSString like so:

NSString *password = passwordField.text;
NSString *confirmPassword = passwordConfirmField.text;

if([password isEqualToString: confirmPassword]) {
    // password correctly repeated
} else {
    // nope, passwords don't match
}

Hope this helps!



来源:https://stackoverflow.com/questions/6905751/compare-the-text-of-two-text-fields

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!