zoukankan      html  css  js  c++  java
  • 谓词基本使用

     1 #pragma mark - 谓词基本使用
     2 - (void)demo1
     3 {
     4     // 谓词的用处是用来判断对象是否符合某种要求
     5     // predicateWithFormat指定谓词匹配的条件
     6     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self CONTAINS 'ao'"];
     7     
     8     NSString *str = @"hello";
     9     
    10     // 用谓词来匹配字符串
    11     if ([predicate evaluateWithObject:str]) {
    12         NSLog(@"符合条件");
    13     } else {
    14         NSLog(@"不符合条件");
    15     }
    16 }
    17 
    18 #pragma mark - 匹配数组
    19 - (void)demo2
    20 {
    21     // 准备数据
    22     NSMutableArray *arrayM = [NSMutableArray arrayWithCapacity:30];
    23     
    24     for (NSInteger i = 0; i < 30; i++) {
    25         NSString *name = [NSString stringWithFormat:@"ID:%04d", arc4random_uniform(10000)];
    26         NSInteger age = arc4random_uniform(20) + 15;
    27         
    28         Person *p = [Person personWithName:name age:age];
    29         
    30         [arrayM addObject:p];
    31     }
    32     // 需求:
    33     // 1> 姓名中包含"8"字符串的名字
    34     // 2> 查询年龄范围在 18 和 22 之间的
    35     // CONTAINS[cd]在匹配字符串时,不区分大小写,不区分注音符号
    36 //    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age BETWEEN {18, 22} && name CONTAINS[cd] '8'"];
    37 
    38     // 使用谓词对对象进行匹配时,是通过KVC进行匹配的,指定keyPath,需要用%K
    39     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K CONTAINS '8'", @"name"];
    40     
    41     // 对数组进行过滤
    42     NSLog(@"匹配结果 %@", [arrayM filteredArrayUsingPredicate:predicate]);
    43 }
  • 相关阅读:
    [NOIP2008] 传纸条
    [NOIP2006] 能量项链
    [poj2393] Yogurt factory
    [poj3069] Saruman's Army
    [NOIP2011] 观光公交
    [NOIP2010] 关押罪犯
    [洛谷2744] 量取牛奶
    [poj3281] Dining
    关于几类STL容器的swap复杂度问题
    折半法
  • 原文地址:https://www.cnblogs.com/orzmj123/p/3512194.html
Copyright © 2011-2022 走看看