谓词 过滤

//
//  main.m
//  谓词
//
//  Created by MAC on 15/12/21.
//  Copyright © 2015年 MAC. All rights reserved.
//

#import <Foundation/Foundation.h>
#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;
}
时间: 2024-10-10 21:50:21

谓词 过滤的相关文章

谓词(NSPredicate)

OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到过滤的作用,我们可以编写简单的谓词语句,就可以从数组中过滤出我们想要的数据.非常方便.在Java中是没有这种技术的,但是有开源的框架已经实现了此功能. 下面来看一下具体的例子吧: Person.h [objc] view plain copy // //  Person.h //  46_NSPredicate // //  Created by jian

谓词记录

首先,我们需要知道何谓谓词,让我们看看官方的解释: The NSPredicate class is used to define logical conditions used to constrain a search either for a fetch or for in-memory filtering. NSPredicate类是用来定义逻辑条件约束的获取或内存中的过滤搜索. 可以使用谓词来表示逻辑条件,用于描述对象持久性存储在内存中的对象过滤.其实意思就是:我是一个过滤器,不符合条

谓词-——搜索用

一,定义: NSPredicate 用于定义一个逻辑条件,通过该条件可执行搜索或内存中的过滤操作. 谓词由NSPredicate 对象来代表,有3个子类:NSComparisonPredicate.NSCompoundPredicate和NSExpression. 二,过滤集合: 使用谓词来过滤不可变集合与过滤可变的区别是: 使用谓词过滤不可变集合时,方法将会返回符合条件的集合元素组成的新集合: 使用谓词过滤可变集合时,方法没有返回值,该方法直接剔除改集合中不符合谓词条件的元素. eg: NSP

ios 谓词的使用

首先,我们需要知道何谓谓词,让我们看看官方的解释: The NSPredicate class is used to define logical conditions used to constrain a search either for a fetch or for in-memory filtering. NSPredicate类是用来定义逻辑条件约束的获取或内存中的过滤搜索.可以使用谓词来表示逻辑条件,用于描述对象持久性存储在内存中的对象过滤.其实意思就是:我是一个过滤器,不符合条件

视图封状逻辑代码及谓词查找的运用

1:封装一些优化代码 a实例:多处公用视图的相同逻辑代码处理 实例要求它的职责包括: 通过传入的 URL,加载并展示头像图片 显示一些附属信息,比如大V的标志 将用户点击头像的事件传递给外层的 View Controller 跳转到用户信息页面 @interface FDAvatarView : UIView // 假设 VIPInfo 是某个 Entity - (void)configureWithAvatarURL:(NSURL *)URL VIPInfo:(id)info tapped:(

NSPredicate过滤数组数据

NSPredicate编写软件时,经常需要获取一个对象集合,然后删除不满足条件的对象,保留符合条件的对象,从而提供一些有意义的对象.Cocoa提供了一个名为NSPredicate的类,他用于指定过滤器的条件.可以创建NSPredicate对象,通过该对象准确地描述所需的条件,对每个对象通过谓词进行筛选,判断他们是否与条件相匹配.Cocoa用NSPredicate描述查询的方式,原理类似于在数据库中进行查询.可以在数据库风格的API中使用NSPredicate类,例如Core Data和Spotl

OC学习篇之---谓词(NSPredicate)

在前一篇文章中我们介绍了OC中一个重要技术通知:http://blog.csdn.net/jiangwei0910410003/article/details/41923401,今天我们在来看一下OC中给我们提供的一个技术:谓词(NSPredicate) OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到过滤的作用,我们可以编写简单的谓词语句,就可以从数组中过滤出我们想要的数据.非常方便.在Java中是没

【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词

一. 字符串 API 1. NSString 用法简介 (1) NSString API 介绍 NSString 功能 : -- 创建字符串 : 使用 init 开头的实例方法, 也可以使用 String 开头的方法; // init 开头方法创建字符串 unichar data[5] = {97, 98, 99, 100, 101}; NSString * str = [[NSString alloc] initWithCharacters : data length : 5]; // str

(转载)OC学习篇之---谓词(NSPredicate)

在前一篇文章中我们介绍了OC中一个重要技术通知,今天我们在来看一下OC中给我们提供的一个技术:谓词(NSPredicate) OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到过滤的作用,我们可以编写简单的谓词语句,就可以从数组中过滤出我们想要的数据.非常方便.在Java中是没有这种技术的,但是有开源的框架已经实现了此功能. 下面来看一下具体的例子吧: Person.h 1 // 2 // Person.