cocoa中提供了NSPRedicate類,指定過濾器的條件,將符合條件的對象保留下來.謂詞篩選后的結果也是一個數組.
CoreData查找數據也是通過謂詞.
謂詞設置方法
//設置條件 NSPredicate *predicate=[NSPredicate predicateWithFormat:@"age<5"]; //與 NSPredicate *predicate1=[NSPredicate predicateWithFormat:@"age<9&&age>5"]; //或 NSPredicate *predicate2=[NSPredicate predicateWithFormat:@"age<3||age>5"]; //占位符傳參 NSPredicate *predicate3=[NSPredicate predicateWithFormat:@"age=%d",3]; //多條件 NSArray *arrayname=@[@"jack1",@"Tom7" ]; NSPredicate *predicate4=[NSPredicate predicateWithFormat:@"name in %@",arrayname]; //是否以某個字符開頭,可以使用和與或 NSPredicate *predicate5=[NSPredicate predicateWithFormat:@"name beginswith 'j'"]; //是否以某個字符結尾,可以使用和與或 NSPredicate *predicate6=[NSPredicate predicateWithFormat:@"name endswith '9'"]; //contains 是否包含某個字符 NSPredicate *predicate7=[NSPredicate predicateWithFormat:@"name contains 'a'"]; //like 類似SQL中的模糊查找 NSPredicate *predicate8=[NSPredicate predicateWithFormat:@"name like '*a*'"];
搜索結果獲得方法
//方法一: for (person *p1 in array) { //返回布爾值,根據布爾值可以判斷符合要求的數據 BOOL result=[predicate evaluateWithObject:p1]; if (result) { NSLog(@"%@",p1); } } //方法二 //filterUsingPredicate,將過濾后的方法放入原方法中,數組是可變數組 [array filterUsingPredicate:predicate]; for (person *p1 in array) { NSLog(@"%@",p1); } //方法三 //filteredArrayUsingPredicate,將過濾后的結果放入一個新的數組中 NSArray *array1=[array filteredArrayUsingPredicate:predicate8]; for (person *p1 in array1) { NSLog(@"%@",p1); }
新聞熱點
疑難解答