1 #import <Foundation/Foundation.h> 2 #import "Person.h" 3 4 int main(int argc, const char * argv[]) { 5 @autoreleasepool { 6 Person *person1 = [[Person alloc] initWithName:@"Mary" andAge:13 andGender:@"girl"]; 7 Person *person2 = [[Person alloc] initWithName:@"Tom" andAge:16 andGender:@"boy"]; 8 Person *person3 = [[Person alloc] initWithName:@"Linda" andAge:20 andGender:@"girl"]; 9 Person *person4 = [[Person alloc] initWithName:@"Jerry" andAge:32 andGender:@"boy"]; 10 Person *person5 = [[Person alloc] initWithName:@"Sam" andAge:24 andGender:@"boy"]; 11 12 NSArray *personArr = @[person1, person2, person3, person4, person5]; 13 #pragma mark 关系运算符 14 // 创建谓词,用于指定过滤条件 -- 年龄大于20 15 NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"age > 20"]; 16 // 遍历数组 17 for (Person *person in personArr) { 18 // 判断person是否符合谓词里所定义的条件 19 if ([predicate1 evaluateWithObject:person]) { 20 NSLog(@"person = %@", person); 21 } 22 } 23 #pragma mark 快速筛选数组 24 // 过滤数组,找到符合条件的元素,存到数组中 25 NSArray *resultArr = [personArr filteredArrayUsingPredicate:predicate1]; 26 NSLog(@" > %@", resultArr); 27 28 #pragma mark 逻辑运算符 and与 or或 not非 29 // 年龄大于20岁的女生 30 NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"age < 20 && gender = ‘girl‘"]; 31 resultArr = [personArr filteredArrayUsingPredicate:predicate2]; 32 NSLog(@"and%@", resultArr); 33 34 #pragma mark 范围运算符 between在...之间 in包含的关系 35 // 年龄在16到24之间的人,包含16和24 36 NSPredicate *predicate3 = [NSPredicate predicateWithFormat:@"age between {16, 24}"]; 37 resultArr = [personArr filteredArrayUsingPredicate:predicate3]; 38 NSLog(@"between%@", resultArr); 39 40 // 姓名是mary 和 tom的人 41 NSPredicate *predicate4 = [NSPredicate predicateWithFormat:@"name in {‘Mary‘, ‘Tom‘}"]; 42 resultArr = [personArr filteredArrayUsingPredicate:predicate4]; 43 NSLog(@"in %@", resultArr); 44 45 #pragma mark 占位符 $ 46 // NSPredicate *predicate5 = [NSPredicate predicateWithFormat:@"name = $Name"]; 47 NSPredicate *predicate5 = [NSPredicate predicateWithFormat:@"age < $Age and gender = $Gender"]; 48 NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"Linda", @"Name", @20, @"Age", @"girl", @"Gender" ,nil]; 49 predicate5 = [predicate5 predicateWithSubstitutionVariables:dictionary]; 50 resultArr = [personArr filteredArrayUsingPredicate:predicate5]; 51 NSLog(@"占位符%@", resultArr); 52 53 #pragma mark 字符串运算符 54 NSArray *strArray = @[@"Hello", @"world", @"hey", @"kitty"]; 55 // 以字符串he开头,忽略大小写 56 NSPredicate *predicate6 = [NSPredicate predicateWithFormat:@"self beginswith[c] ‘he‘"]; 57 resultArr = [strArray filteredArrayUsingPredicate:predicate6]; 58 NSLog(@"beginswith%@", resultArr); 59 // 包含o的 60 NSPredicate *predicate7 = [NSPredicate predicateWithFormat:@"self contains ‘o‘"]; 61 resultArr = [strArray filteredArrayUsingPredicate:predicate7]; 62 NSLog(@"contains%@", resultArr); 63 64 #pragma mark LIKE运算符 65 NSPredicate *predicate8 = [NSPredicate predicateWithFormat:@"self like[c] ‘h*‘"]; 66 resultArr = [strArray filteredArrayUsingPredicate:predicate8]; 67 NSLog(@"like %@", resultArr); 68 69 #pragma mark 正则表达式 70 // 验证邮箱 71 NSString *str = @"^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; 72 NSPredicate *predicate9 = [NSPredicate predicateWithFormat:@"self matches %@", str]; 73 if ([predicate9 evaluateWithObject:@"http://www.ba"]) { 74 NSLog(@"正确"); 75 } else { 76 NSLog(@"错误"); 77 } 78 } 79 return 0; 80 }
时间: 2024-10-11 15:35:43