【问题标题】:Email Address Validation in IOS 7IOS 7 中的电子邮件地址验证
【发布时间】:2017-09-06 05:08:27
【问题描述】:

我的应用程序中有联系表格,因为我需要验证电子邮件 ID 我找到了一些验证电子邮件 ID 的解决方案,但是当使用验证方法时它会显示警告。

@synthesize mail;

电子邮件验证码:

-(BOOL) Emailvalidate:(NSString *)mail
{
    BOOL stricterFilter = YES;
    NSString *stricterFilterString = @"[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}";
    NSString *laxString = @".+@([A-Za-z0-9]+\\.)+[A-Za-z]{2}[A-Za-z]*";
    NSString *emailRegex = stricterFilter ? stricterFilterString : laxString;
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:mail];
}

在返回时显示警告,如

邮件的本地声明隐藏实例变量。

我正在使用JSON 将所有日期发送到我的服务器,请告诉我如何解决这个问题。

【问题讨论】:

  • 问题是你有一个局部变量(在你的对象中声明)与你的方法中声明的变量同名,尝试将 (NSString *)mail 更改为 (NSString *)tempMail跨度>
  • @ReeCube 我现在更改了名称如何将此验证连接到邮件字符串
  • 这是因为你在全局范围内声明了相同的变量名。

标签: ios objective-c validation email


【解决方案1】:

问题是你有一个局部变量(用@syntensize在你的对象中声明)与你的方法中声明的变量同名,试试这个:

-(BOOL) validateEmail:(NSString *)tempMail
 {
     BOOL stricterFilter = YES;
     NSString *stricterFilterString = @"[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}";
     NSString *laxString = @".+@([A-Za-z0-9]+\\.)+[A-Za-z]{2}[A-Za-z]*";
     NSString *emailRegex = stricterFilter ? stricterFilterString : laxString;
     NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
     return [emailTest evaluateWithObject:tempMail];
 }

【讨论】:

  • 如何连接我的邮件uitextfield和验证请告诉我
  • 添加一个change事件然后每次内容发生变化都要检查一下,更多关于change事件:stackoverflow.com/questions/7010547/…
【解决方案2】:

嗯,您的 Emailvalidate 方法采用名为“mail”的参数,并且您的类也已经有一个名为“mail”的字段......只需将“mail”参数更改为“newMail”之类的东西......

【讨论】:

    【解决方案3】:
    - (BOOL)validateEmailWithString:(NSString*)checkString {
        BOOL stricterFilter = NO;
        NSString *stricterFilterString = @"[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}";
        NSString *laxString = @".+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*";
        NSString *emailRegex = stricterFilter ? stricterFilterString : laxString;
        NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
        return [emailTest evaluateWithObject:checkString];
    }
    

    【讨论】:

      【解决方案4】:

      除了 cania 已经说过的,这将是一个很好的类方法而不是实例方法。我会将其设为类方法,以便您的任何类都可以在您需要验证另一封电子邮件时轻松调用它。

      假设您的邮件属性是 NSString,则调用将如下所示,如果电子邮件有效,则返回 true。

      if ([YourClassName Emailvalidate:self.mail]) {
            // valid e-mail, do what you want to do 
      } 
      else {
            // handle getting an invalid e-mail here 
      }
      

      【讨论】:

        猜你喜欢
        • 2013-02-20
        • 2014-06-12
        • 1970-01-01
        • 2016-06-24
        • 2018-03-13
        • 2011-09-02
        • 2014-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多