Skip to content

Instantly share code, notes, and snippets.

@tLewisII
Created January 17, 2014 22:34
Show Gist options
  • Save tLewisII/8482932 to your computer and use it in GitHub Desktop.
Save tLewisII/8482932 to your computer and use it in GitHub Desktop.
static NSPredicate + NSString causing crash.
@implementation NSPredicate (CHAdditions)
+ (NSPredicate *)sharedValidEmailPredicate {
static NSPredicate *_sharedPredicate = nil;
static NSString *_emailRegEx = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_emailRegEx =
@"(?:[a-z0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[a-z0-9!#$%\\&'*+/=?\\^_`{|}"
@"~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\"
@"x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-"
@"z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5"
@"]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-"
@"9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21"
@"-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])";
_sharedPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", _emailRegEx];
});
return _sharedPredicate;
}
///NSString+CHAdditions.m
- (BOOL)isValidEmail {
return [[NSPredicate sharedValidEmailPredicate] evaluateWithObject:self];
}
/// DRForgotUsernameViewController.m
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
self.navigationItem.rightBarButtonItem.enabled = (newString.isValidString && newString.isValidEmail);
return YES;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment