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 的使用(持续更新)的更多相关文章

  1. 神技!微信小程序(应用号)抢先入门教程(附最新案例DEMO-豆瓣电影)持续更新

    微信小程序 Demo(豆瓣电影) 由于时间的关系,没有办法写一个完整的说明,后续配合一些视频资料,请持续关注 官方文档:https://mp.weixin.qq.com/debug/wxadoc/de ...

  2. iOS系列教程 目录 (持续更新...)

      前言: 听说搞iOS的都是高富帅,身边妹子无数.咱也来玩玩.哈哈. 本篇所有内容使用的是XCode工具.Swift语言进行开发. 我现在也是学习阶段,每一篇内容都是经过自己实际编写完一遍之后,发现 ...

  3. ASP.NET MVC 5 系列 学习笔记 目录 (持续更新...)

    前言: 记得当初培训的时候,学习的还是ASP.NET,现在回想一下,图片水印.统计人数.过滤器....HttpHandler是多么的经典! 不过后来接触到了MVC,便立马爱上了它.Model-View ...

  4. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  5. iOS开发系列文章(持续更新……)

    iOS开发系列的文章,内容循序渐进,包含C语言.ObjC.iOS开发以及日后要写的游戏开发和Swift编程几部分内容.文章会持续更新,希望大家多多关注,如果文章对你有帮助请点赞支持,多谢! 为了方便大 ...

  6. 基于android studio的快捷开发(将持续更新)

    对于Android studio作为谷歌公司的亲儿子,自然有它的好用的地方,特别是gradle方式和快捷提示方式真的很棒.下面是我在实际开发中一些比较喜欢用的快速开发快捷键,对于基本的那些就不多说了. ...

  7. 总结js常用函数和常用技巧(持续更新)

    学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. PS:此文档,我会持续更新. Aj ...

  8. 我的敏捷、需求分析、UML、软件设计电子书 - 下载(持续更新中)

    我将所有我的电子书汇总在一起,方便大家下载!(持续更新) 文档保存在我的网站——软件知识原创基地上(www.umlonline.org),请放心下载. 1)软件设计是怎样炼成的?(2014-4-1 发 ...

  9. React Native之坑总结(持续更新)

    React Native之坑总结(持续更新) Genymotion安装与启动 之前我用的是蓝叠(BlueStack)模拟器,跑RN程序也遇到了一些问题,都通过搜索引擎解决了,不过没有记录. 但是Blu ...

随机推荐

  1. SQL 根据生日和日期计算年龄

    FLOOR(datediff(DY,p.Dob,o.RegisterTime)/365

  2. Dev控件删除按钮的两种方式

    测试版本15.2.10:在Dev控件中删除按钮空间有两种方式:1.鼠标右键出现Delete选项,这种删除是不完全的删除,只是删除了按钮的显示,实际上按钮还是存在于代码中的.2.用键盘上的Delete键 ...

  3. 《精通Python设计模式》学习结构型之MVC模式

    这个就不需要多评论了, 哪个主流的PYTHON的WEB框架都有这些模式实现哈. quotes = ('A man is not complete until he is married. Then h ...

  4. Mongodb配置:error:10061 由于目标计算机积极拒绝,无法连接

    相信很多学Node的同学,在进入MongoDB后台管理 Shell的时候都会“遇到error:10061 由于目标计算机积极拒绝,无法连接”这种情况,很多情况都是dbpath与dblog的路径没有配置 ...

  5. 从字节码角度分析Byte类型变量b++和++b

    1. 下面是一到Java笔试题: public class Test2 { public void add(Byte b) { b = b++; } public void test() { Byte ...

  6. Bad connection to FS. command aborted. exception: Call to chaoren/192.168.80.100:9000 failed on connection exception: java.net.ConnectException: Connection refused

    Bad connection to FS. command aborted. exception: Call to chaoren/192.168.80.100:9000 failed on conn ...

  7. WIN8+VS2013编写发布WCF、一(编写)、二(部署)、三(调用)

    原文://http://www.cnblogs.com/tntboom/p/4348483.html 引言:上学期因为写服务器用WCF,所以连查资料再瞎调试勉强成功了,但是这学期又到了用WCF的时候, ...

  8. 虚拟机Ubuntu16.04 The system is running in low-graphics mode解决方法!!

    虚拟机Ubuntu16.04无法进入图形界面 The system is running in low-graphics mode 安装的虚拟机Ubuntu16.04 64位本可以正常使用,在安装了许 ...

  9. 洛谷——P1747 好奇怪的游戏

    P1747 好奇怪的游戏 题目背景 <爱与愁的故事第三弹·shopping>娱乐章. 调调口味来道水题. 题目描述 爱与愁大神坐在公交车上无聊,于是玩起了手机.一款奇怪的游戏进入了爱与愁大 ...

  10. 深入理解ajax系列第六篇

    前面的话 每个HTTP请求和响应都会带有相应的头部信息,其中有的对开发人员有用.XHR对象提供了操作头部信息的方法.本文将详细介绍HTTP的头部信息 默认信息 默认情况下,在发送XHR请求的同时,还会 ...