NSTimer 和 NSPredicate

NSTimer

NSTimer,timer是一个能周期性的执行我们指定的方法或者在从现在开始的后面的某一个时刻执行我们指定的方法的对象。其实是将一个监听加入到系统的RunLoop中去,当系统runloop到如何timer条件的循环时,会调用timer一次,当timer执行完,也就是回调函数执行之后,timer会再一次的将自己加入到runloop中去继续监听。
NSTimer初始化:有五种初始化方法

/**
 *  TimeInterval:时间间隔
 * target:方法执行者(发送的对象)
 * selector:需要执行的方法
 * userInfo:其他信息
 * repeats:是否重复
 */
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];

NSTimer常用方法

fireDate:设置开始时间
timer.fireDate = [NSDate date];

setFireDate:设置暂停和开始的时间

[self.timer setFireDate:[NSDate distantFuture]];//在未来的某一刻停止
[self.timer setFireDate:[NSDate date]];//继续运行

invalidate:删除定时器
[self.timer invalidate];

定时器的回调方法

- (void)timerAction{
    NSDateFormatter *dateFormator = [[NSDateFormatter alloc] init];
    dateFormator.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSString *date = [dateFormator stringFromDate:[NSDate date]];
    NSLog(@"%@",date);  
}```

#NSPredicate 
NSPredicate: 是Foundation框架提供的用来指定过滤条件的类。该类主要用于指定过滤器的条件,该对象可以准确的描述所需条件,对每个对象通过谓词进行筛选,判断是否与条件相匹配。
定义谓词对象,谓词对象中包含了过滤条件:
`NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<%d",30];
`

filterUsingPredicate:使用谓词条件过滤数组中的元素,过滤之后返回查询的结果

NSArray *filterArray = [persons filteredArrayUsingPredicate:predicate];//persons为自定义的数组
NSLog(@"filterArray=%@",filterArray);```

evaluateWithObject:对单个对象进行过滤

NSMutableArray *matchObjArray = [NSMutableArray array];//定义一个可变数组承接结果
    for (Person *item in persons) {
        // A、判断是否满足条件
        // 判断语句:evaluateWithObject,符合过滤条件就返回yes
        if ([predicate evaluateWithObject:item]) {
            [matchObjArray addObject:item];
        }
    }

可以与逻辑运算符结合使用:AND、OR、NOT (&& || !)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name>='小白' and age>20 || gender = '男' "];

也可以和关系操作结合使用:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY person.age < 18"];
/*
ALL person.age < 18;
NONE person.age < 18;
SOME person.age < 18;
*/

IN:(属于)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.name IN {@"小黑",@"Gose"} "]

BEGINSWITH:以...开头
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name BEGINSWITH 'a'"];

ENDSWITH:以...结尾
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name ENDSWITH 'se'"];

CONTAINS:包含..字符,与c、d 连用,表示是否忽略大小写、是否忽略重音字母(字母上方有声调标号)。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS 'a'"];

like *:匹配任意多个字符

/*
 ?:表示一个字符   
*a : 以a结尾的
*a* : 字符串中含有a字符的
?a* : 第二个字符为a的
*/
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like '?a*'"];

你可能感兴趣的:(NSTimer 和 NSPredicate)