我在我的应用程序中有联系表单,我需要验证电子邮件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
将所有日期发送到我的服务器,请告诉我如何解决此问题。
答案 0 :(得分:4)
问题是你有一个局部变量(在你的对象中用@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];
}
答案 1 :(得分:1)
好吧,您的Emailvalidate方法会使用名为' mail'的参数,而您的班级已经有一个名为' mail'的字段。以及......只需更改邮件即可。参数类似于' newMail' ..
答案 2 :(得分:1)
- (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];
}
答案 3 :(得分:0)
除了cania已经说过的内容之外,这将成为一个很好的类方法而不是实例方法。我会把它变成一个类方法,这样如果你需要验证另一封电子邮件,你的任何类都可以轻松调用它。
然后调用看起来像这样,如果有效的电子邮件则返回true,假设您的mail属性是NSString。
if ([YourClassName Emailvalidate:self.mail]) {
// valid e-mail, do what you want to do
}
else {
// handle getting an invalid e-mail here
}