Person
#import <Foundation/Foundation.h>
@interface Person : NSObject {
NSString *_name;
NSNumber *_age;
}
@property(nonatomic, retain) NSString *name;
@property(nonatomic, retain) NSNumber *age;
@end
使用:
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSMutableArray *mutableArray = [NSMutableArray array];
for (int i=0; i<6; i++) {
Person *person = [[Person alloc] init];
person.name = [NSString stringWithFormat:@"TOM-%d", i];
person.age = @(33 + i);
[mutableArray addObject:person];
[person release];
}
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age>32"];
//判断是否满足条件
for (Person *per in mutableArray) {
BOOL result = [predicate evaluateWithObject:per];
if (result) {
NSLog(@"%@", per);
}
}
//过滤
NSArray *array = [mutableArray filteredArrayUsingPredicate:predicate];
NSLog(@"array :%@", array);
//占位符参数
NSArray *array2 = [mutableArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"age>%d" , 34]];
NSLog(@"array2 :%@", array2);
//and
NSArray *array3 = [mutableArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"age>%d and age<%d" , 34, 37]];
NSLog(@"array3 :%@", array3);
//or
NSArray *array4 = [mutableArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"age > 32 || age < 35"]];
NSLog(@"array4:%@", array4);
//in
NSArray *array5 = [mutableArray filteredArrayUsingPredicate:
[NSPredicate predicateWithFormat:@"name in {'TOM-1', 'TOM-3'}"]];
NSLog(@"array5%@", array5);
//检查是否以某个字母开头(BEGINSWITH)
NSArray *array6 = [mutableArray filteredArrayUsingPredicate:
[NSPredicate predicateWithFormat:@"name BEGINSWITH 'T'"]];
NSLog(@"array6:%@", array6);
//检查是否以某个字母结尾(ENDSWITH)
NSArray *array7 = [mutableArray filteredArrayUsingPredicate:
[NSPredicate predicateWithFormat:@"name ENDSWITH '4'"]];
NSLog(@"array7:%@", array7);
//包含 CONTAINS
NSArray *array8 = [mutableArray filteredArrayUsingPredicate:
[NSPredicate predicateWithFormat:@"name CONTAINS '-3'"]];
NSLog(@"array8:%@", array8);
//like
NSArray *array9 = [mutableArray filteredArrayUsingPredicate:
[NSPredicate predicateWithFormat:@"name like 'TOM*'"]];
NSLog(@"array9:%@", array9);
}
return 0;
}
2013-03-17 19:29:25.304 PredicateDemo[1107:303] name:TOM-0 age:33
2013-03-17 19:29:25.307 PredicateDemo[1107:303] name:TOM-1 age:34
2013-03-17 19:29:25.309 PredicateDemo[1107:303] name:TOM-2 age:35
2013-03-17 19:29:25.310 PredicateDemo[1107:303] name:TOM-3 age:36
2013-03-17 19:29:25.311 PredicateDemo[1107:303] name:TOM-4 age:37
2013-03-17 19:29:25.311 PredicateDemo[1107:303] name:TOM-5 age:38
2013-03-17 19:29:25.312 PredicateDemo[1107:303] array :(
"name:TOM-0 age:33",
"name:TOM-1 age:34",
"name:TOM-2 age:35",
"name:TOM-3 age:36",
"name:TOM-4 age:37",
"name:TOM-5 age:38"
)
2013-03-17 19:29:25.313 PredicateDemo[1107:303] array2 :(
"name:TOM-2 age:35",
"name:TOM-3 age:36",
"name:TOM-4 age:37",
"name:TOM-5 age:38"
)
2013-03-17 19:29:25.314 PredicateDemo[1107:303] array3 :(
"name:TOM-2 age:35",
"name:TOM-3 age:36"
)
2013-03-17 19:29:25.315 PredicateDemo[1107:303] array4:(
"name:TOM-0 age:33",
"name:TOM-1 age:34",
"name:TOM-2 age:35",
"name:TOM-3 age:36",
"name:TOM-4 age:37",
"name:TOM-5 age:38"
)
2013-03-17 19:29:25.316 PredicateDemo[1107:303] array5(
"name:TOM-1 age:34",
"name:TOM-3 age:36"
)
2013-03-17 19:29:25.316 PredicateDemo[1107:303] array6:(
"name:TOM-0 age:33",
"name:TOM-1 age:34",
"name:TOM-2 age:35",
"name:TOM-3 age:36",
"name:TOM-4 age:37",
"name:TOM-5 age:38"
)
2013-03-17 19:29:25.317 PredicateDemo[1107:303] array7:(
"name:TOM-4 age:37"
)
2013-03-17 19:29:25.318 PredicateDemo[1107:303] array8:(
"name:TOM-3 age:36"
)
2013-03-17 19:29:25.324 PredicateDemo[1107:303] array9:(
"name:TOM-0 age:33",
"name:TOM-1 age:34",
"name:TOM-2 age:35",
"name:TOM-3 age:36",
"name:TOM-4 age:37",
"name:TOM-5 age:38"
)