谓词的使用 -ios

#import <Foundation/Foundation.h>

@interface Person : NSObject<NSCopying>
@property(nonatomic,copy) NSString *name;
@property(nonatomic,retain) NSNumber *age;
-(void) setNewName:(NSString *) name;
@end
#import "Person.h"

@implementation Person:NSObject

- (id)copyWithZone:(NSZone *)zone{
    Person *person=[[[self class] allocWithZone:zone] init];
    person.name=_name;
    person.age=_age;
    return person;
}
-(void) setNewName:(NSString *) name{
    self.name=name;
}
-(NSString *)description{
    NSString *description=[NSString stringWithFormat:@"年龄:%@;名字:%@",_age,_name];
    return description;
}
@end
//谓词用法 NSPredicate
        NSMutableArray *array=[NSMutableArray array];
        for (int i=0; i<10; i++) {
            Person *person=[[Person alloc]init];
            [person setAge:@(20+i)];
            person.name=[NSString stringWithFormat:@"jage-%d",i];
            [array addObject:person];
        }
        //大,小,等;等运算过滤
        NSPredicate *predicate=[NSPredicate predicateWithFormat:@"age<%d",25];
        NSPredicate *predicate2=[NSPredicate predicateWithFormat:@"age<23",23];
        NSPredicate *predicate3=[NSPredicate predicateWithFormat:@"age<27 and age>25"];
        NSPredicate *predicate4=[NSPredicate predicateWithFormat:@"age<27 && age>25"];
        NSPredicate *predicate5=[NSPredicate predicateWithFormat:@"age<23 || age>26"];
        NSPredicate *predicate6=[NSPredicate predicateWithFormat:@"name=‘jage-3‘"];
        //在某个里面
        NSPredicate *predicate7=[NSPredicate predicateWithFormat:@"name in {‘jage-1‘,‘jage-5‘}"];
        NSArray *[email protected][@"jage-1",@"jage-4",@"jage-3"];
        NSPredicate *predicate8=[NSPredicate predicateWithFormat:@"name in %@",inArray];
        //已什么开头,注意加单引号
        NSPredicate *predicate9=[NSPredicate predicateWithFormat:@"name BEGINSWITH ‘jage‘"];
        //已什么结尾,注意加单引号
        NSPredicate *predicate10=[NSPredicate predicateWithFormat:@"name ENDSWITH ‘-9‘"];
        //包含,注意加单引号
        NSPredicate *predicate11=[NSPredicate predicateWithFormat:@"name CONTAINS ‘-3‘"];
        //like,注意加单引号
        NSPredicate *predicate12=[NSPredicate predicateWithFormat:@"name LIKE ‘jage-?‘"];
        NSPredicate *predicate13=[NSPredicate predicateWithFormat:@"name LIKE ‘*-2‘"];

        for (Person *person in array) {
            if([predicate6 evaluateWithObject:person]){//逐个对象判断
                NSLog(@"%@",person);
            }
        }
        //对数组过滤
       NSArray *filterArray=[array filteredArrayUsingPredicate:predicate13];
        NSLog(@"%@",filterArray);

谓词的使用 -ios,布布扣,bubuko.com

时间: 2024-12-28 05:24:25

谓词的使用 -ios的相关文章

NSPredicate文档中文翻译

由于觉得网上对于NSPredicate讲解比较粗略,所以打算先看苹果官方文档(如有错误,欢迎指正). 概览 NSPredicate类是用来定义逻辑条件约束的获取或内存中的过滤搜索. 您可以使用谓词来表示逻辑条件,用于描述对象持久性存储在内存中的对象过滤.虽然从 NSComparisonPredicate, NSCompoundPredicate, 和 NSExpression的实例直接创建谓词是常见的,但是你会经常用NSPredicate的类方法解析的格式字符串来创建谓词.谓词格式字符串的例子包

IOS开发之NSPredicate谓词的用法

编程的人员不管是上过大学还是从培训机构出来的都应该SQL语句有所了解,我们知道,在SQL语句当中 where 条件表达式可以对二维关系表的数据做条件筛选.微软的C# .net中也实现了功能能和SQL语句相媲美的技术,它就是List泛型集合的Lambda表达式,支持查找.排序.比较.组合等.在java中虽然没有在语言中集成对List对象的操作的实现,但是第三方开源库同样实现了这一功能.在IOS开发Cocoa框架中提供了一个功能强大的类NSPredicate,下面来讨论一下它的强大之处在哪...NS

iOS中的谓词NSPredicate的使用

今天写一篇关于iOS中关于谓词一些用法,我们先来看苹果官方给出的解释: The NSPredicate class is used to define logical conditions used to constrain a search either for a fetch or for in-memory filtering. You use predicates to represent logical conditions, used for describing objects i

【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

iOS:转载:IOS谓词--NSPredicate

IOS谓词--NSPredicate 分类: IOS应用2013-02-19 17:24 6792人阅读 评论(1) 收藏 举报 Cocoa 提供了NSPredicate 用于指定过滤条件,谓词是指在计算机中表示计算真假值的函数,它使用起来有点儿像SQL 的查询条件,主要用于从集合中分拣出符合条件的对象,也可以用于字符串的正则匹配.首先我们看一个非常简单的例子,对谓词有一个认知.#import <Foundation/Foundation.h>@interface Person: NSObje

ios CoreData框架的使用,对上下文数据的增删改查,表与表之间的关联,1对多,1对1,谓词查询,多表连接

这里是只是代码,因为博客插入图片效果不是很好,我自己写的总结比较详细,有兴趣的朋友可以在评论里留下邮箱,我收到后会发给大家. 转载注明出处,重视原创者的劳动成果,谢谢! - (void)viewDidLoad { [super viewDidLoad]; [self _creatTable];//插入数据 //    [self _query];// 查询数据 // KVC很霸道,即使readonly通过kvc也可赋值,kvo精华 //    Book * book = [[Book alloc

iOS开发,谓词(NSPredicate)的用法:(一)基本用法

<span style="white-space: pre;"> </span>在iOS开发中,系统提供了NSPredicate这个类给我们进行一些匹配.筛选操作,非常方便.在没有用这个类时,我们要获取两个数组中某些特定的元素时,需要写代码一一对比,但是使用了这个类,只需要三四行代码就够了. 为了演示,先定义一个person类 .h文件 #import <Foundation/Foundation.h> @interface Person : NSO

iOS之谓词(NSPredicate)(正则表达式和UIBarController)

iOS之NSPredicate(正则表达式和UIBarController) 本文转发至:https://segmentfault.com/a/1190000000623005 NSPredicate,这个类和我上一篇博文中提到的valueForKeyPath一样很强大.它的使用主要集中在两个方法中 NSArray - (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate; NSMutableArray - (void)f

iOS之NSPredicate(正则表达式和UIBarController):谓词

//  实例化对象的头文件 @property (nonatomic, strong)NSString *name;@property (nonatomic, assign)NSString *sex;@property (nonatomic, assign)NSInteger tel;@property (nonatomic, assign)NSInteger qq; - (Member *)initWithDic:(NSDictionary *)dic;+ (Member *)memberW