8 Mar 2017

NSPredicate & Different formats...


NSPredicate & Different formats...

Link:

http://nshipster.com/nspredicate/


NSString *emailRegex = @"[A-Z0-9a-z]([A-Z0-9a-z._-]{0,64})+[A-Z0-9a-z]+@[A-Z0-9a-z]+([A-Za-z0-9.-]{0,64})+([A-Z0-9a-z])+\\.[A-Za-z]{2,4}"; NSString *firstNameRegex = @"[0-9A-Za-z\"'-]{2,32}$"; NSString *firstNameRegex = @"[ 0-9A-Za-z]{2,32}$"; NSString *lastNameRegex = @"[0-9A-Za-z\"'-]{2,32}$"; NSString *mobileNumberRegEx = @"^[0-9]{10}$"; NSString *zipcodeRegEx = @"^[0-9]{5}$"; NSString *SSNRegEx = @"^\\d{3}-?\\d{2}-?\\d{4}$"; NSString *addressRegEx = @"^[ A-Za-z0-9]{2,32}$"; NSString *cityRegEx = @"^[ A-Za-z0-9]{2,25}$"; NSString *PINRegEx = @"^[0-9]{4}$"; NSString *driversLiscRegEx = @"^[0-9a-zA-Z]{5,20}$"; -(BOOL)validateEmail { //Email address field should give an error when the email address begins with ".","-","_" . NSPredicate *emailPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; return ([emailPredicate evaluateWithObject:self.text] && self.text.length <= 64 && ([self.text rangeOfString:@".."].location == NSNotFound)); } - (BOOL)validateFirstName { NSPredicate *firstNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", firstNameRegex]; return [firstNamePredicate evaluateWithObject:self.text]; } - (BOOL)validateLastName { NSPredicate *lastNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", lastNameRegex]; return [lastNamePredicate evaluateWithObject:self.text]; } - (BOOL)validateAlphaNumericMin2Max32 { NSPredicate *firstNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", firstNameRegex]; return [firstNamePredicate evaluateWithObject:self.text]; } - (BOOL)validateMobileNumber { NSString *strippedMobileNumber = [[[[self.text stringByReplacingOccurrencesOfString:@"(" withString:@""] stringByReplacingOccurrencesOfString:@")" withString:@""] stringByReplacingOccurrencesOfString:@"-" withString:@""] stringByReplacingOccurrencesOfString:@" " withString:@""]; NSPredicate *mobileNumberPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", mobileNumberRegEx]; return [mobileNumberPredicate evaluateWithObject:strippedMobileNumber]; } - (BOOL)validateZipcode { NSPredicate *zipcodePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", zipcodeRegEx]; return [zipcodePredicate evaluateWithObject:self.text]; } - (BOOL)validateSSN { NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", SSNRegEx]; return [predicate evaluateWithObject:self.text]; } - (BOOL)validateAddress { NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", addressRegEx]; return [predicate evaluateWithObject:self.text]; } - (BOOL)validateCity { NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", cityRegEx]; return [predicate evaluateWithObject:self.text]; } - (BOOL)validatePIN { NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", PINRegEx]; return [predicate evaluateWithObject:self.text]; } - (BOOL)validateDriversLiscNumber { if([self.text length] > 20) { return NO; } NSPredicate *driversLiscPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", driversLiscRegEx]; return [driversLiscPredicate evaluateWithObject:self.text]; }



  • Predicate Format String Substitions
    • C format string specifiers: %d, %s, %f, etc
    • Object substitution: %@
    • Keypath substitution: %K
  • Predicate Comparison Operators
    • =, ==: Left-hand expression equals right-hand expression
    • >=, =>: Left-hand expression is greater than or equal to right-hand expression
    • <=, =<: Left-hand expression is less than or equal to right-hand expression
    • >: Left-hand expression is greater than right-hand expression
    • <: Left-hand expression is less than right-hand expression
    • !=, <>: Left-hand expression is not equal to right-hand expression
    • BETWEEN: Left-hand expression is between or equal to either of the values in the right-hand expression, which specifies lower and upper bounds - ex: BETWEEN { 0, 5}
  • Predicate Compound Operators
    • AND, &&: Logical AND
    • OR, ||: Logical OR
    • NOT, !: Logical NOT
  • Predicate String Comparison Operators
    • BEGINSWITH: Left-hand expression begins with right-hand expression
    • ENDSWITH: Left-hand expression ends with right-hand expression
    • CONTAINS: Left-hand expression contains right-hand expression
    • LIKE: Left-hand expression equals right-hand expression, with wildcard substitution 
      • *: Match zero or more characters
      • ?: Match one character

No comments:

Post a Comment

Recent Posts

Codable demo

Link: https://www.dropbox.com/s/kw7c1kgv1628bh7/codableDemo.zip?dl=0