• NSPredicate的学习


    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;
    }
    

      

  • 相关阅读:
    主流负载均衡器LVS、Nginx、HAProxy介绍
    shell脚本加密软件shc
    Linux系统安全配置相关
    Linux系统split对tar文件进行分片和压缩
    kubernetes组件详解和创建POD流程
    构建RPM之SPEC详解
    Python推荐系统框架:RecQ
    Python常用库-Psutil
    使用NLP从文章中自动提取关键字
    模糊字符串匹配:FuzzyWuzzy
  • 原文地址:https://www.cnblogs.com/AbelChen1991/p/3590963.html
Copyright © 2020-2023  润新知