比较两个UITextFields

时间:2013-09-24 12:29:50

标签: iphone ios objective-c xcode

我不知道为什么这不起作用,我觉得这是非常愚蠢的......我正在尝试比较两个文本字段(比如确认密码类型的东西),但它只是不起作用!!我尝试了几种不同的选择,但没有一种可行。我试过了:

if (passwordCheckField1.text == passwordCheckField2.text) {
        [self performSegueWithIdentifier:@"segue4" sender:nil];
    }

我试过了:

NSString *retrivedPasswordCheckField1 = passwordCheckField1.text;
NSString *retrivedPasswordCheckField2 = passwordCheckField2.text;
if ([retrivedPasswordCheckField1 isEqualToString:retrivedPasswordCheckField2]) {
        [self performSegueWithIdentifier:@"segue4" sender:nil];
    }

我试过了:

if ([passwordCheckField1.text isEqualToString:retrivedPasswordCheckField2.text]) {
        [self performSegueWithIdentifier:@"segue4" sender:nil];
    }

我在.h中实现了<UITextFieldDelegate>,我还为两个字段设置了委托,(passwordCheckField1.delegate = self; passwordCheckField2.delegate = self;

我错过了什么?谢谢你的帮助!

修改

我可能应该提到我正在使用带有多个子视图控制器的导航控制器。每个都包含一个文本字段,因此当视图控制器关于第一个密码出现时,用户输入它然后单击下一步将它们带到确认密码视图控制器。所有都链接到相同的类文件。

5 个答案:

答案 0 :(得分:4)

这应该有用。

NSString *password = passwordCheckField1.text;
NSString *confirmPassword = passwordCheckField2.text;

NSLog(@"password: '%@'", password);
NSLog(@"confirmPassword: '%@'", confirmPassword);

if([password isEqualToString: confirmPassword]) {
       NSLog(@"Match");

} else {
        NSLog(@"Not Match");

}

答案 1 :(得分:1)

if (passwordCheckField1.text == passwordCheckField2.text) {
    [self performSegueWithIdentifier:@"segue4" sender:nil];
}

上面的代码不比较两个字符串值。它实际上比较了两个指针值。所以它对你没用。

但代码

if ([retrivedPasswordCheckField1 isEqualToString:retrivedPasswordCheckField2]) { [self performSegueWithIdentifier:@"segue4" sender:nil]; }

应该比较字符串值。可能是字符串,您的值不相同或nil。您是否打印了passwordCheckField1.textpasswordCheckField2.text。两个字符串的值是什么?

答案 2 :(得分:1)

chk你的价值观。

 if ([passwordCheckField1.text isEqualToString:passwordCheckField2.text]) {   
    //Match it's working for me 
 }

答案 3 :(得分:0)

试试这个

if([[passwordCheckField1 text] isEqualToString:[passwordCheckField2 text]])
{
    [self performSegueWithIdentifier:@"segue4" sender:nil];
}
else
{
   //not matched
}

答案 4 :(得分:0)

作为预防措施,尝试在比较之前尝试前导和尾随空格的密码字符串,例如

NSString *pwd1 = [pwdTxtField1.text stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" "]];