热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

谓词过滤

main.m谓词CreatedbyMACon151221.Copyright©2015年MAC.Allrightsreserved.#import#importPerson.h
//
//  main.m
//  谓词
//
//  Created by MAC on 15/12/21.
//  Copyright © 2015年 MAC. All rights reserved.
//

#import 
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
       //谓词 NSPredicate
        //对集合进行运算
        //后面是条件
        NSPredicate *pre = [NSPredicate predicateWithFormat:@"age=%d",20];
        //Key %k
        NSPredicate *pre3 = [NSPredicate predicateWithFormat:@"%K=%d",@"age"];
        Person *p1 = [[Person alloc]init];
        p1.pid = 1;
        p1.name =@"tom";
        p1.age = 20;
        Person *p2 = [[Person alloc]init];
        p2.pid = 2;
        p2.name =@"kite";
        p2.age = 20;
        Person *p3 = [[Person alloc]init];
        p3.pid = 3;
        p3.name =@"lll";
        p3.age = 30;
        //判断条件 返回值为Bool
    BOOL b = [pre evaluateWithObject:p2];
        NSLog(@"%@",b==1?@"YES":@"NO");
       //遍历p1 p2 p3 找出年龄等于20的人
        NSArray *array = @[p1,p2,p3];
       // NSPredicate *pre1 = [NSPredicate predicateWithFormat:@"age>%d&&age<%d",20,50];
        //BETWEEN{20,30}在20到30之间
         NSPredicate *pre1 = [NSPredicate predicateWithFormat:@"age BETWEEN {21,50}"];
        for (Person *per in array) {
          BOOL  b = [pre1 evaluateWithObject:per];
            if(b){
                NSLog(@"%@,%d",per.name,per.age);
            }
        }
        //直接过滤数组(重要简单)
        array = [array filteredArrayUsingPredicate:pre1];
        NSLog(@"%@",array);
        
        //数组的范围过滤年龄
        NSArray *ar = @[[NSNumber numberWithInt:20],[NSNumber numberWithInt:30]];
        NSPredicate *pp = [NSPredicate predicateWithFormat:@"age BETWEEN %@",ar];
        for (Person *per in array) {
            BOOL  b = [pp evaluateWithObject:per];
            if(b){
                NSLog(@"%@,%d",per.name,per.age);
            }
        }

        NSArray *aa = @[@"tom1",@"tom2",@"...tom",@"kite",@"kite1",@"xiao he",];
        //数组里面的本身就是字符串 用SELF (self)
        NSPredicate *predicate  = [NSPredicate predicateWithFormat:@"SELF=%@",@"tom"];
       // aa = [aa filteredArrayUsingPredicate:predicate];
        NSLog(@"%@",aa);
        //找出以特定开始字符串开头的(beginswith)
        NSPredicate *predicate1  = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH %@",@"t"];
       // aa = [aa filteredArrayUsingPredicate:predicate1];
        NSLog(@"..%@",aa);
        //找出以特定结尾字符串结尾的(endswith)
        NSPredicate *predicate2  = [NSPredicate predicateWithFormat:@"SELF ENDSWITH %@",@"he"];
       // aa = [aa filteredArrayUsingPredicate:predicate2];
        NSLog(@"%@",aa);
        //包含特定字符串的contains
        NSPredicate *predicate3  = [NSPredicate predicateWithFormat:@"SELF CONTAINS %@",@"t"];
      //  aa = [aa filteredArrayUsingPredicate:predicate3];
        NSLog(@"%@",aa);
        
        //开头  ?表示后面可以有单个字符 两个??代表两个字符 *代表若干个
        NSPredicate *predicate4  = [NSPredicate predicateWithFormat:@"SELF LIKE ‘tom*‘"];
         aa = [aa filteredArrayUsingPredicate:predicate4];
        NSLog(@"11%@",aa);
        
        
        
    }
    return 0;
}

谓词 过滤


推荐阅读
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • React基础篇一 - JSX语法扩展与使用
    本文介绍了React基础篇一中的JSX语法扩展与使用。JSX是一种JavaScript的语法扩展,用于描述React中的用户界面。文章详细介绍了在JSX中使用表达式的方法,并给出了一个示例代码。最后,提到了JSX在编译后会被转化为普通的JavaScript对象。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
author-avatar
dghghjkk_952
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有