博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSPredicate笔记
阅读量:6268 次
发布时间:2019-06-22

本文共 1069 字,大约阅读时间需要 3 分钟。

NSPredicate *p = [NSPredicate predicateWithFormat:@"SELF like[c] %@", @"aa*bb"];

其中:

  1. SELF大小写都行。
  2. aa*bb使用了通配符,*号只能写在变量中,而不能这样@"SELF like[c] %@*%@", @"aa", @"bb"。
  3. 字符串本来是要用引号括起来的,不过这里不用加,NSPredicate会自动加。

测试布尔值

NSPredicate *p = [NSPredicate predicateWithFormat:@"self == NO"];     BOOL b1 = [p1 evaluateWithObject:[NSNumber numberWithBool:NO]];     NSPredicate *p2 = [NSPredicate predicateWithFormat:@"self == %@", [NSNumber numberWithBool:NO]];     BOOL b2 = [p2 evaluateWithObject:[NSNumber numberWithBool:NO]];

动态属性名

下面这种NSPredicate

NSPredicate *p = [NSPredicate predicateWithFormat:@"name = %@", @"Jimmy"];

有时候我们可能想让name这个关键字,也变成变量,写在外面,那样就可以写一个更通用的NSPredicate了。于是很自然地想到了下面的代码:

NSString *key = @"name";     NSString *value = @"Jimmy";     NSPredicate *p = [NSPredicate predicateWithFormat:@"%@ = %@", key, value];

这样,如果在执行到第三句之前,我们可以改变key和value的值,让其更通用。想法是好的,但是这样是错的,前面说过,NSPredicate要自动添加引号,所以最后得到的格式应该是@"'name' = 'Jimmy'"。明显不对。要做的就是:

NSString *key = @"name";     NSString *value = @"Jimmy";     NSPredicate *p = [NSPredicate predicateWithFormat:@"%K = %@", key, value];

转载地址:http://jvppa.baihongyu.com/

你可能感兴趣的文章
Inherits、CodeFile、CodeBehind的区别
查看>>
创建一个SimpleDlg
查看>>
使用XML生成菜单
查看>>
udp,tcp对于socket的写法
查看>>
第二周个人赛
查看>>
推断Windows版本号新方法
查看>>
2017-4-18 ADO.NET
查看>>
RSuite 一个基于 React.js 的 Web 组件库
查看>>
技术博客网址收藏
查看>>
python 金融分析学习
查看>>
授人以渔不如授人以鱼
查看>>
matlab练习程序(图像Haar小波变换)
查看>>
【Java】从域名得到ip
查看>>
Mysql索引会失效的几种情况分析
查看>>
LVM逻辑卷
查看>>
zoj3591 Nim(Nim博弈)
查看>>
canvas绘图
查看>>
poj - 3039 Margaritas on the River Walk
查看>>
bootstrap(5)关于导航
查看>>
Aptana插件在eclipse中安装
查看>>