NSPredicate 的使用(持续更新)

NSPredicate
谓词工具一般用于过滤数组数据,也可用来过滤CoreData查询出的数据.
1). 支持keypath
2). 支持正则表达式
在使用之前先新建3个类 Teacher Info Address,详细代码如下
Info.h
#import <Foundation/Foundation.h> @interface Info : NSObject @property (nonatomic, strong) NSString *classNum; @end
Info.m
#import "Info.h" @implementation Info @end
Address.h
#import <Foundation/Foundation.h> @interface Address : NSObject @property (nonatomic, strong) NSString *detailAddress; @end
Address.m
#import "Address.h" @implementation Address @end
Teacher.h
#import <Foundation/Foundation.h>
#import "Info.h"
#import "Address.h" @interface Teacher : NSObject @property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) Info *info;
@property (nonatomic, strong) Address *address;
@property (nonatomic, assign) NSInteger age; @end
Teacher.m
#import "Teacher.h" @implementation Teacher - (instancetype)init
{
self = [super init];
if (self) {
//此处必须初始化以下对象
_info = [[Info alloc] init];
_address = [[Address alloc] init];
}
return self;
} @end
初始化数据并添加进数组中
//初始化数据
Teacher *teacher1 = [[Teacher alloc] init];
teacher1.info.classNum = @"11班";
teacher1.address.detailAddress = @"海淀区";
teacher1.name = @"L.Y.F.";
teacher1.age = ; Teacher *teacher2 = [[Teacher alloc] init];
teacher2.info.classNum = @"12班";
teacher2.address.detailAddress = @"立水桥";
teacher2.name = @"P.K.";
teacher2.age = ; Teacher *teacher3 = [[Teacher alloc] init];
teacher3.info.classNum = @"11班";
teacher3.address.detailAddress = @"万盛路";
teacher3.name = @"Y.X.";
teacher3.age = ; //将数据添加进数组
NSMutableArray *teachers =
[[NSMutableArray alloc] initWithObjects:teacher1, teacher2, teacher3, nil];
开始正式的使用谓词
[1] 比较操作 (>,<,>=,<=,=)

[2] 字符串常规操作 (beginswith,endswith,contains)
@"name beginswith[cd] 'Y'"
@"name endswith[cd] 'X.'"
@"name contains[cd] 'X'"

[3] 范围 (between,in)
@"age between {10, 20}"
@"age in {10, 20}" //这个不确定是什么

[4] 通配符 (like)
注:使用?表示一个字符,*表示多个字符
@"name like[cd] '*X*'"

[5] 逻辑运算 (AND,OR,NOT)
@"age <= 22 AND name like[cd] '*X*'"

[6] 正则表达式
注:^Y.+.$ 以Y开头,以.结尾的字符
@"self.name matches '^Y.+.$'"

[7] keypath

NSPredicate 的使用(持续更新)的更多相关文章
- 神技!微信小程序(应用号)抢先入门教程(附最新案例DEMO-豆瓣电影)持续更新
微信小程序 Demo(豆瓣电影) 由于时间的关系,没有办法写一个完整的说明,后续配合一些视频资料,请持续关注 官方文档:https://mp.weixin.qq.com/debug/wxadoc/de ...
- iOS系列教程 目录 (持续更新...)
前言: 听说搞iOS的都是高富帅,身边妹子无数.咱也来玩玩.哈哈. 本篇所有内容使用的是XCode工具.Swift语言进行开发. 我现在也是学习阶段,每一篇内容都是经过自己实际编写完一遍之后,发现 ...
- ASP.NET MVC 5 系列 学习笔记 目录 (持续更新...)
前言: 记得当初培训的时候,学习的还是ASP.NET,现在回想一下,图片水印.统计人数.过滤器....HttpHandler是多么的经典! 不过后来接触到了MVC,便立马爱上了它.Model-View ...
- git常用命令(持续更新中)
git常用命令(持续更新中) 本地仓库操作git int 初始化本地仓库git add . ...
- iOS开发系列文章(持续更新……)
iOS开发系列的文章,内容循序渐进,包含C语言.ObjC.iOS开发以及日后要写的游戏开发和Swift编程几部分内容.文章会持续更新,希望大家多多关注,如果文章对你有帮助请点赞支持,多谢! 为了方便大 ...
- 基于android studio的快捷开发(将持续更新)
对于Android studio作为谷歌公司的亲儿子,自然有它的好用的地方,特别是gradle方式和快捷提示方式真的很棒.下面是我在实际开发中一些比较喜欢用的快速开发快捷键,对于基本的那些就不多说了. ...
- 总结js常用函数和常用技巧(持续更新)
学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. PS:此文档,我会持续更新. Aj ...
- 我的敏捷、需求分析、UML、软件设计电子书 - 下载(持续更新中)
我将所有我的电子书汇总在一起,方便大家下载!(持续更新) 文档保存在我的网站——软件知识原创基地上(www.umlonline.org),请放心下载. 1)软件设计是怎样炼成的?(2014-4-1 发 ...
- React Native之坑总结(持续更新)
React Native之坑总结(持续更新) Genymotion安装与启动 之前我用的是蓝叠(BlueStack)模拟器,跑RN程序也遇到了一些问题,都通过搜索引擎解决了,不过没有记录. 但是Blu ...
随机推荐
- 【LOJ】 #2025. 「JLOI / SHOI2016」方
题解 有什么LNOI啊,最后都是JLOI罢了 一道非常--懵逼的统计题 当然是容斥,所有的方案 - 至少有一个点坏掉的正方形 + 至少有两个点坏掉的正方形 - 至少有三个点坏掉的正方形 + 至少有四个 ...
- 【LOJ】#2027. 「SHOI2016」黑暗前的幻想乡
题解 我一开始写的最小表示法写的插头dp,愉快地TLE成60分 然后我觉得我就去看正解了! 发现是容斥 + 矩阵树定理 矩阵树定理对于有重边的图只要邻接矩阵的边数设置a[u][v]表示u,v之间有几条 ...
- jenkins备份与恢复
jenkins这里我通过thinbackup插件进行对jenkins的配置备份与恢复 1丶安装thinbackup插件 2丶系统管理选择thinbackup插件 3丶创建备份目录 mkdir /bac ...
- Python入门2(Python与C语言语法的不同、Notepad++运行Python代码)
本篇博客主要介绍Python的基本语法与C语言不同的地方 [不同] 一.Python代码需要有严格的缩进,即C语言中所谓的良好的编码习惯.缩进不正确就会报错. 二.C语言需要圆括号 三.C语言每个语句 ...
- 【原创】获取MySQL crash 时的core file
最近有台服务器的MySQL经常crash,为了进一步定位问题,开启了mysql core file功能,开启步骤如下,供参考 [开启步骤] 1. my.cnf文件中增加2个配置选项 [mysqld] ...
- djongo form.is_valid 返回false的解决方法
在用djongo编写网站时,有时点击提交按钮之后,并未提交,通过debug会发现是form.is_valid()返回false造成的.但是,具体原因往往并不容易找. 这时在提交的html中添加如下代码 ...
- 大型系统中使用JMS优化技巧–Sun OpenMQ
我们先来看看在Sun OpenMQ系统中 一个持久.可靠的方式传送消息的步骤是怎么样的,如图所示: 查看大图请点击这里 在传送过程中,系统处理JMS消息分为以下两类: ■ 有效负荷消息,由生成方发 ...
- Lua脚本
应用场景: 游戏开发 独立应用脚本 Web 应用脚本 扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench 安全系统,如入侵检测系统 1. 在很多时候,我们可以将Lua直接嵌 ...
- 在Hexo中渲染MathJax数学公式
最近学机器学习涉及很多的数学公式,公式如果用截图显示,会比较low而且不方便.因此需要对Hexo做些配置,支持公式渲染.同时文末整理了各种公式的书写心得,比如矩阵.大小括号.手动编号.上下角标和多行对 ...
- HDU 3282 Running Median 动态中位数,可惜数据范围太小
Running Median Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...