zoukankan      html  css  js  c++  java
  • 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;
    }
    

      

  • 相关阅读:
    Apex API 请求
    Apex 的 API 简介
    Salesforce 自定义元数据类型
    Apex 中 DML 进阶知识小结
    深度学习中的Attention机制
    从FM推演各深度CTR预估模型(附代码)
    深入浅出Word2Vector原理解析
    GBDT算法用于分类问题
    特征交叉
    方差膨胀因子VIF
  • 原文地址:https://www.cnblogs.com/AbelChen1991/p/3590963.html
Copyright © 2011-2022 走看看