Ios 将验证设置为文本字段时出错

Ios 将验证设置为文本字段时出错,ios,validation,uitextfield,Ios,Validation,Uitextfield,使用以下代码,我试图验证电子邮件文本字段,但问题是,即使两个文本字段中的电子邮件和确认电子邮件文本相同,也会显示错误消息,表明它们不相同。我不知道我的代码有什么问题,有什么帮助吗 - (IBAction)submit_Act:(id)sender { //new// NSString *errorMessage; errorMessage = @""; if ([usernametxt.text isEqualToString:@""]){ errorMessage = @"P

使用以下代码,我试图验证电子邮件文本字段,但问题是,即使两个文本字段中的电子邮件和确认电子邮件文本相同,也会显示错误消息,表明它们不相同。我不知道我的代码有什么问题,有什么帮助吗

 - (IBAction)submit_Act:(id)sender {
 //new//
 NSString  *errorMessage;
 errorMessage = @"";
if ([usernametxt.text isEqualToString:@""]){
    errorMessage = @"Please enter Username \n";
}

if([passwordtxt.text isEqualToString:@""]){
    errorMessage = [errorMessage stringByAppendingString:@"Please enter Password\n"];
}

if([confirmPasswordtxt.text isEqualToString:@""]){
    errorMessage = [errorMessage stringByAppendingString:@"Please enter Confirm Password\n"];
}
if((passwordtxt.text == confirmPasswordtxt.text) == false){
    errorMessage = [errorMessage stringByAppendingString:@"Password and Confirm Password are not same.\n"];
}

NSString *regex = @"[^@]+@[A-Za-z0-9.-]+\\.[A-Za-z]+";
NSPredicate *emailPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES  %@", regex];

if([emailaddtxt.text isEqualToString:@""]){
    errorMessage = [errorMessage stringByAppendingString:@"Please enter Email Address\n"];
}
else if ([emailPredicate evaluateWithObject:emailaddtxt.text] == NO) {
    errorMessage = [errorMessage stringByAppendingString:@"Please enter valid Email Address\n"];
}

if([confirmEmailtxt.text isEqualToString:@""]){
    errorMessage = [errorMessage stringByAppendingString:@"Please enter Confirm Email Address\n"];
}
else if ([emailPredicate evaluateWithObject:confirmEmailtxt.text] == NO) {
    errorMessage = [errorMessage stringByAppendingString:@"Please enter valid confirm Email Address\n"];
}

if((emailaddtxt.text == confirmEmailtxt.text) == false)
{
   errorMessage = [errorMessage stringByAppendingString:@"Email and Confirm Email are not same.\n"];
}

if([citytxt.text isEqualToString:@""]){
    errorMessage = [errorMessage stringByAppendingString:@"Please enter City\n"];
}

if([statetxt.text isEqualToString:@""]){
    errorMessage = [errorMessage stringByAppendingString:@"Please enter State\n"];
}

if([countrytxt.text isEqualToString:@""]){
    errorMessage = [errorMessage stringByAppendingString:@"Please enter Country\n"];
}

if (_agree_btn.selected==false) {
    errorMessage = [errorMessage stringByAppendingString:@"Please agree Terms & Conditions\n"];
}

if (![errorMessage isEqualToString:@""]) {
    NSLog(@"not done");
    [[[UIAlertView alloc] initWithTitle:nil message:errorMessage delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Ok", nil] show];
    return;
 }
}   else{

    NSLog(@" Done Dana done");

    _activityIndicator.hidden=NO;
    [_activityIndicator startAnimating];

    protocolTest = [[ClassWithProtocol alloc] init];
    [protocolTest setDelegate:self];
    NSString *post = [NSString stringWithFormat:@"task=webapi.registerClient&username=%@&password=%@&person_name=%@&email=%@&terms_check=1&city=%@&state=%@&country=%@&user_id=%@",usernametxt.text,passwordtxt.text,contactPersonstxt.text,emailaddtxt.text,citytxt.text,statetxt.text,countrytxt.text,_fetchid];
    [protocolTest  startLogintask:post];

}  
而不是

if((emailaddtxt.text == confirmEmailtxt.text) == false)
{
   errorMessage = [errorMessage stringByAppendingString:@"Email and Confirm Email are not same.\n"];
}
像这样比较它们

if(![emailaddtxt.text isEqualToString:confirmEmailtxt.text])
{
   errorMessage = [errorMessage stringByAppendingString:@"Email and Confirm Email are not same.\n"];
}
而不是

if((emailaddtxt.text == confirmEmailtxt.text) == false)
{
   errorMessage = [errorMessage stringByAppendingString:@"Email and Confirm Email are not same.\n"];
}
像这样比较它们

if(![emailaddtxt.text isEqualToString:confirmEmailtxt.text])
{
   errorMessage = [errorMessage stringByAppendingString:@"Email and Confirm Email are not same.\n"];
}
试着这样,

if([passwordtxt text] != [confirmPasswordtxt text])
{
     errorMessage = [errorMessage stringByAppendingString:@"Password and Confirm Password are not same.\n"];
}
对于电子邮件

if([emailaddtxt text] != [confirmEmailtxt text])
{
     errorMessage = [errorMessage stringByAppendingString:@"Email and Confirm Email are not same.\n"];
}
这很好用。

像这样试试

if([passwordtxt text] != [confirmPasswordtxt text])
{
     errorMessage = [errorMessage stringByAppendingString:@"Password and Confirm Password are not same.\n"];
}
对于电子邮件

if([emailaddtxt text] != [confirmEmailtxt text])
{
     errorMessage = [errorMessage stringByAppendingString:@"Email and Confirm Email are not same.\n"];
}
这将很好地工作。

检查以下代码:

if(![emailaddtxt.text isEqual:confirmEmailtxt.text])
{
   errorMessage = [errorMessage stringByAppendingString:@"Email and Confirm Email are not same.\n"];
}
检查以下代码:

if(![emailaddtxt.text isEqual:confirmEmailtxt.text])
{
   errorMessage = [errorMessage stringByAppendingString:@"Email and Confirm Email are not same.\n"];
}

这里的问题是文本字段有@和。符号不能直接比较。我们需要先将它们转换成字符串,然后使用isEqualToString比较它们,所以这里我找到了解决问题的方法

 NSString *emailID = emailaddtxt.text;
 NSString *confemail = confirmEmailtxt.text;

 NSString *regex = @"[^@]+@[A-Za-z0-9.-]+\\.[A-Za-z]+";
 NSPredicate *emailPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES  %@", regex];

if([emailID isEqualToString:@""]){
    errorMessage = [errorMessage stringByAppendingString:@"Please enter Email Address\n"];
    NSLog(@"email is%@",self.emailaddtxt);
 }

if ([emailPredicate evaluateWithObject:emailID] == NO) {
  errorMessage = [errorMessage stringByAppendingString:@"Please enter valid Email Address\n"];
 }


 NSString *regex2 = @"[^@]+@[A-Za-z0-9.-]+\\.[A-Za-z]+";
 NSPredicate *confemailPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES  %@", regex2];

 if([confemail isEqualToString:@""]){
    errorMessage = [errorMessage stringByAppendingString:@"Please enter Confirm Email Address\n"];
    NSLog(@"email is%@",self.confirmEmailtxt.text);
 }

 if([confemailPredicate evaluateWithObject:confemail] == NO)
 {
    errorMessage = [errorMessage stringByAppendingString:@"Please enter valid confirm Email Address\n"];
 }

 if(![emailID isEqualToString:confemail])
{
  errorMessage = [errorMessage stringByAppendingString:@"Email and Confirm Email are not same.\n"];
  NSLog(@"email is%@& confemail is%@" ,self.emailaddtxt.text,self.confirmEmailtxt.text);
}

这里的问题是文本字段有@和。符号不能直接比较。我们需要先将它们转换成字符串,然后使用isEqualToString比较它们,所以这里我找到了解决问题的方法

 NSString *emailID = emailaddtxt.text;
 NSString *confemail = confirmEmailtxt.text;

 NSString *regex = @"[^@]+@[A-Za-z0-9.-]+\\.[A-Za-z]+";
 NSPredicate *emailPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES  %@", regex];

if([emailID isEqualToString:@""]){
    errorMessage = [errorMessage stringByAppendingString:@"Please enter Email Address\n"];
    NSLog(@"email is%@",self.emailaddtxt);
 }

if ([emailPredicate evaluateWithObject:emailID] == NO) {
  errorMessage = [errorMessage stringByAppendingString:@"Please enter valid Email Address\n"];
 }


 NSString *regex2 = @"[^@]+@[A-Za-z0-9.-]+\\.[A-Za-z]+";
 NSPredicate *confemailPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES  %@", regex2];

 if([confemail isEqualToString:@""]){
    errorMessage = [errorMessage stringByAppendingString:@"Please enter Confirm Email Address\n"];
    NSLog(@"email is%@",self.confirmEmailtxt.text);
 }

 if([confemailPredicate evaluateWithObject:confemail] == NO)
 {
    errorMessage = [errorMessage stringByAppendingString:@"Please enter valid confirm Email Address\n"];
 }

 if(![emailID isEqualToString:confemail])
{
  errorMessage = [errorMessage stringByAppendingString:@"Email and Confirm Email are not same.\n"];
  NSLog(@"email is%@& confemail is%@" ,self.emailaddtxt.text,self.confirmEmailtxt.text);
}



不要像“if((emailaddtxt.text==confirmEmailtxt.text==false)”这样比较字符串,“if([emailaddtxt.text isEqualToString::confirmEmailtxt.text])”这样比较字符串。有没有帮助人员仍然有相同的问题?有人知道我在这里面临的问题吗?@vicky你检查了这两个(密码和确认密码)吗在控制台中打印值?可能存在任何引用问题…@Bharath是的,我已通过在控制台中打印进行检查,并且值是正确的。但是,即使电子邮件和确认电子邮件是相同的,这也给了我一个错误,即它们不相同,但密码和确认密码工作正常。不要比较字符串,比如“if((emailaddtxt.text==confirmeailtxt.text)==false)”比较字符串,比如“if([emailaddtxt.text IsequalString::confirmeailtxt.text])任何帮助人员,仍然存在相同的问题?有人知道我在这里面临的问题吗?@vicky您是否通过在控制台中打印来检查这两个(密码和确认密码)值?可能存在任何引用问题…@Bharath是的,我已通过在控制台中打印进行检查,并且值是正确的。但是,即使电子邮件和确认电子邮件是相同的,这给了我一个错误,它们不一样,但密码和确认密码工作正常。如果电子邮件和确认邮件是相同的,它仍然会显示messagePrajapathi您的更新答案与Kirti Mali给出的答案完全相同,见下文,她给出的答案。哦,对不起!但第一次我忘了写“!”了。但问题是,密码和确认密码工作正常,但如果电子邮件和确认电子邮件是相同的,它仍然会显示它们不相同的消息。是因为我们正在用正则表达式检查它吗?大写和小写字符串的issuecheck在哪里?如果电子邮件和确认邮件相同,它仍然会显示messagePrajapathi您的更新答案与Kirti Mali给出的答案完全相同,请参见下面,她给出的答案。哦,对不起!但第一次我忘了写“!”了。但问题是,密码和确认密码工作正常,但如果电子邮件和确认电子邮件是相同的,它仍然会显示它们不相同的消息。是因为我们正在用正则表达式检查它吗?大写和小写字符串的issuecheck可能在哪里?不,如果电子邮件和确认电子邮件都相同,它将不起作用,这会导致错误,电子邮件和确认电子邮件不相同。如果您尝试使用
isEqualToString
?我做了,这里的问题是文本字段有@和。符号不能直接比较。我们需要先将它们转换成字符串,然后使用isEqualToString比较它们,看看解决方案。是的,这是正确的…我尝试了我的答案中给出的方法,它在我的最后也起了作用。顺便说一句,你终于得到了它,真是太好了。:)感谢您的支持:)不,如果电子邮件和确认电子邮件都是相同的,那么它就不起作用了。如果您尝试使用
isEqualToString
,那么电子邮件和确认电子邮件就不一样了。这是我做的,问题是文本字段中有@和。符号不能直接比较。我们需要先将它们转换成字符串,然后使用isEqualToString比较它们,看看解决方案。是的,这是正确的…我尝试了我的答案中给出的方法,它在我的最后也起了作用。顺便说一句,你终于得到了它,真是太好了。:)感谢您的支持:)它给了我相同的错误电子邮件和电子邮件是不一样的,即使他们是same@vicky如果((emailaddtxt.text==confirmemailtx.text)==false)请确保不要忘记“!”如果我添加了我自己创建的条件,这里的问题是文本字段有@和。符号不能直接比较。我们需要先将它们转换为字符串,然后使用isEqualToString比较它们,看看解决方案。这给了我相同的错误电子邮件和confEmail,即使它们是相同的same@vicky如果((emailaddtxt.text==confirmEmailtxt.text)==false)请确保不要忘记“!”我的代码将替换为您的此行代码如果我添加了我自己做的,这里的问题是文本字段有@和。符号不能直接比较。我们需要先在字符串中转换它们,然后使用isEqualToString比较它们,看看解决方案。