int main(int argc, const char * argv[])
{
@autoreleasepool {
// insert code here...
// NSLog(@"Hello, World!");
//NSPredicate过略数组元素的用法比如你从文件中读入了一个array1,然后想把程序中的一个array2中符合array1中内容的元素过滤出来。
// 正 常傻瓜一点就是两个for循环,一个一个进行比较,这样效率不高,而且代码也不好看。
// 其实一个循环或者无需循环就可以搞定了,那就需要用搞 NSPredicate这个类了~膜拜此类~
// NSArray *arrayFilter = [NSArray arrayWithObjects:@"pict", @"blackrain", @"ip", nil];
// NSArray *arrayContents = [NSArray arrayWithObjects:@"I am a picture.", @"I am a guy", @"I am gagaga", @"ipad", @"iphone", nil];
// int i = 0, count = [arrayFilter count];
// for(i = 0; i < count; i ++)
// {
// NSString *arrayItem = (NSString *)[arrayFilter objectAtIndex:i];
// NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"self CONTAINS %@", arrayItem];
// //去掉arrayContents中包含arrayFilter元素的元素
// NSLog(@"Filtered array with filter %@, %@", arrayItem, [arrayContents filteredArrayUsingPredicate:filterPredicate]);
// }
//另一个方法 不许循环
NSArray *arrayFilter = [NSArray arrayWithObjects:@"abc1", @"abc2", nil];
NSArray *arrayCon = [NSArray arrayWithObjects:@"a1", @"abc1", @"abc4", @"abc2", nil];
NSMutableArray *arrayContent=[[NSMutableArray alloc]initWithArray:arrayCon];
NSPredicate *thePredicate = [NSPredicate predicateWithFormat:@"NOT (SELF in %@)", arrayFilter];
//对arrayContent进行了过滤
[arrayContent filterUsingPredicate:thePredicate];
NSLog(@"%@",arrayContent);
//剩下的例子比较容易理解,就运行代码了
// 4)match的用法
// 1. 简单比较
// NSString *match = @"imagexyz-999.png";
// NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF == %@", match];
// NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];
// 2. match里like的用法(类似Sql中的用法)
// NSString *match = @"imagexyz*.png";
// NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like %@", match];
// NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];
// 3. 大小写比较
// [c]表示忽略大小写,[d]表示忽略重音,可以在一起使用,如下:
// NSString *match = @"imagexyz*.png"; //其中*为通配符
// NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like[cd] %@", match];
// NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];
//
// 4.使用正则 使用正则时 就需要用match来匹配
// NSString *match = @"imagexyz-\\d{3}\\.png"; //imagexyz-123.png
// NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF matches %@", match];
// NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];
//谓词对一些语法的支持
// predicate = [NSPredicate predicateWithFormat: @"name == 'Herbie'"];
// predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"];
// NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat:@"name == $NAME"];
//
// varDict = [NSDictionary dictionaryWithObjectsAndKeys:
// @"Herbie", @"NAME", nil];
// predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];
//
// predicate = [NSPredicate predicateWithFormat:
// @"(engine.horsepower > 50) AND (engine.horsepower < 200)"];
// predicate = [NSPredicate predicateWithFormat: @"name < 'Newton'"];
}
return 0;
}