NSTimer
NSTimer局待,timer是一個能周期性的執(zhí)行我們指定的方法或者在從現(xiàn)在開始的后面的某一個時刻執(zhí)行我們指定的方法的對象。其實(shí)是將一個監(jiān)聽加入到系統(tǒng)的RunLoop中去凰慈,當(dāng)系統(tǒng)runloop到如何timer條件的循環(huán)時汞幢,會調(diào)用timer一次,當(dāng)timer執(zhí)行完微谓,也就是回調(diào)函數(shù)執(zhí)行之后森篷,timer會再一次的將自己加入到runloop中去繼續(xù)監(jiān)聽输钩。
NSTimer初始化:有五種初始化方法
/**
* TimeInterval:時間間隔
* target:方法執(zhí)行者(發(fā)送的對象)
* selector:需要執(zhí)行的方法
* userInfo:其他信息
* repeats:是否重復(fù)
*/
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];
NSTimer常用方法
fireDate:設(shè)置開始時間
timer.fireDate = [NSDate date];
setFireDate:設(shè)置暫停和開始的時間
[self.timer setFireDate:[NSDate distantFuture]];//在未來的某一刻停止
[self.timer setFireDate:[NSDate date]];//繼續(xù)運(yùn)行
invalidate:刪除定時器
[self.timer invalidate];
定時器的回調(diào)方法
- (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框架提供的用來指定過濾條件的類。該類主要用于指定過濾器的條件仲智,該對象可以準(zhǔn)確的描述所需條件买乃,對每個對象通過謂詞進(jìn)行篩選,判斷是否與條件相匹配钓辆。
定義謂詞對象剪验,謂詞對象中包含了過濾條件:
`NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<%d",30];
`
filterUsingPredicate:使用謂詞條件過濾數(shù)組中的元素,過濾之后返回查詢的結(jié)果
NSArray *filterArray = [persons filteredArrayUsingPredicate:predicate];//persons為自定義的數(shù)組
NSLog(@"filterArray=%@",filterArray);```
evaluateWithObject:對單個對象進(jìn)行過濾
NSMutableArray *matchObjArray = [NSMutableArray array];//定義一個可變數(shù)組承接結(jié)果
for (Person *item in persons) {
// A岩馍、判斷是否滿足條件
// 判斷語句:evaluateWithObject碉咆,符合過濾條件就返回yes
if ([predicate evaluateWithObject:item]) {
[matchObjArray addObject:item];
}
}
可以與邏輯運(yùn)算符結(jié)合使用:AND、OR蛀恩、NOT (&& || !)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name>='小白' and age>20 || gender = '男' "];
也可以和關(guān)系操作結(jié)合使用:
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:以...結(jié)尾
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name ENDSWITH 'se'"];
CONTAINS:包含..字符疫铜,與c、d 連用双谆,表示是否忽略大小寫壳咕、是否忽略重音字母(字母上方有聲調(diào)標(biāo)號)。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS 'a'"];
like *:匹配任意多個字符
/*
?:表示一個字符
*a : 以a結(jié)尾的
*a* : 字符串中含有a字符的
?a* : 第二個字符為a的
*/
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like '?a*'"];