数组筛选含有中文的方法:
1.
NSString *formatString = [NSStringstringWithFormat:@"(itemName CONTAINS[cd] '%1$@')", str];
[NSPredicatepredicateWithFormat:formatString]
2.
NSPredicate * p = [[NSPredicatepredicateWithFormat:@"(itemName CONTAINS[cd] $str) "]predicateWithSubstitutionVariables:@{@"str":str}];
- 第一种:str为'是会报错 Unable to parse the format string "(itemName CONTAINS[cd] ''')
- 第二章:查询成功:itemName CONTAINS[cd] "'"
补充:
%n$m@:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格 %n$md:代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格,也可以设为0m,在输出之前放置m个0 %n$mf:代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,如m=2.2时,输出格式为00.00
扩展
- 正则 输入内容必须是数字和字母组合
NSString* number=@"(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,14})$";
NSPredicate *numberPre = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",number];
BOOL result = [numberPreevaluateWithObject:self];
- 不包含在某个结果集里
[NSPredicatepredicateWithFormat:@" NOT (fid in %@) ",@"deaf"]
- 属性和值参数化
NSPredicate *searchFor = [NSPredicatepredicateWithFormat:@"SELF = %@ AND %K = min(%@)",self, property, property];
- 复合筛选
[NSCompoundPredicate andPredicateWithSubpredicates:@[[NSPredicate predicateWithFormat:@"age > 25"], [NSPredicate predicateWithFormat:@"firstName = %@", @"Quentin"]]];