NSPredicate谓词的使用
2017-09-15 本文已影响0人
LucXion
-
两个数组获取交集
//目标数组
NSArray *array1 = [NSArray arrayWithObjects:@"好",@"2",@"3",@"5",@"5",@"6",@"7", nil];
//筛选词数组
NSArray *array2 = [NSArray arrayWithObjects:@"好",@"5", nil];
//根据筛选词生成 谓词对象
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"SELF in %@",array2];
//根据函数获取筛选结果 (结果为所有符合条件的元素<汉字、拼音、数字>的集合<同一个元素可以出现多次>)
NSArray *temp1 = [array1 filteredArrayUsingPredicate:predicate1];
-
基本语法:比较运算符 > < = !=
//目标数组
NSArray *array1 = [NSArray arrayWithObjects:@1,@2,@3,@4,@5,@5,@6,@7, nil];
//根据筛选词生成 谓词对象
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"SELF >= 4"];
//根据函数获取筛选结果
NSArray *temp1 = [array1 filteredArrayUsingPredicate:predicate1];
BETWEEN
//目标数组
NSArray *array1 = [NSArray arrayWithObjects:@1,@2,@3,@4,@5,@5,@6,@7, nil];
//根据筛选词生成 谓词对象
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"SELF BETWEEN {2,7}"];
//根据函数获取筛选结果 >= 2并且<= 7
NSArray *temp1 = [array1 filteredArrayUsingPredicate:predicate1];
-
包含关系
//目标数组
NSArray *array1 = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"5",@"6",@"7", nil];
/*
CONTAIN[cd] 'ang' //包含某个字符串
BEGINSWITH[c] 'sh' //以某个字符串开头
ENDSWITH[d] 'ang' //以某个字符串结束
注:[c]不区分大小写[d]不区分发音符号即没有重音符号[cd]既不区分大小写,也不区分发音符号。
*/
//根据筛选词生成 谓词对象
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"SELF CONTAINS [cd] '5'"];
//根据函数获取筛选结果
NSArray *temp1 = [array1 filteredArrayUsingPredicate:predicate1];
-
通配符
//目标数组
NSArray *array1 = [NSArray arrayWithObjects:@"13213",@"2312",@"342",@"12394",@"13125",@"124125",@"1255554316",@"55537", nil];
/*
like [cd] '*553*'
注:[c]不区分大小写[d]不区分发音符号即没有重音符号[cd]既不区分大小写,也不区分发音符号。
*/
//根据筛选词生成 谓词对象
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"SELF like [cd] '*5??5*'"];
//根据函数获取筛选结果
NSArray *temp1 = [array1 filteredArrayUsingPredicate:predicate1];
-
拼音匹配
//将输入转换为小写
searchText = searchText.lowercaseString;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name contains %@ or pinYin contains %@ or pinYinHead contains %@", searchText, searchText, searchText];
self.searchResult = [self.cities filteredArrayUsingPredicate:predicate];