Created
January 17, 2014 22:34
-
-
Save tLewisII/8482932 to your computer and use it in GitHub Desktop.
static NSPredicate + NSString causing crash.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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