NSPredicate

谓词工具一般用于过滤数组数据,也可用来过滤CoreData查询出的数据.

1). 支持keypath

2). 支持正则表达式

在使用之前先新建3个类 Teacher Info Address,详细代码如下

Info.h

  1. #import <Foundation/Foundation.h>
  2.  
  3. @interface Info : NSObject
  4.  
  5. @property (nonatomic, strong) NSString *classNum;
  6.  
  7. @end

Info.m

  1. #import "Info.h"
  2.  
  3. @implementation Info
  4.  
  5. @end

Address.h

  1. #import <Foundation/Foundation.h>
  2.  
  3. @interface Address : NSObject
  4.  
  5. @property (nonatomic, strong) NSString *detailAddress;
  6.  
  7. @end

Address.m

  1. #import "Address.h"
  2.  
  3. @implementation Address
  4.  
  5. @end

Teacher.h

  1. #import <Foundation/Foundation.h>
  2. #import "Info.h"
  3. #import "Address.h"
  4.  
  5. @interface Teacher : NSObject
  6.  
  7. @property (nonatomic, strong) NSString *name;
  8. @property (nonatomic, strong) Info *info;
  9. @property (nonatomic, strong) Address *address;
  10. @property (nonatomic, assign) NSInteger age;
  11.  
  12. @end

Teacher.m

  1. #import "Teacher.h"
  2.  
  3. @implementation Teacher
  4.  
  5. - (instancetype)init
  6. {
  7. self = [super init];
  8. if (self) {
         //此处必须初始化以下对象
  9. _info = [[Info alloc] init];
  10. _address = [[Address alloc] init];
  11. }
  12. return self;
  13. }
  14.  
  15. @end

初始化数据并添加进数组中

  1. //初始化数据
  2. Teacher *teacher1 = [[Teacher alloc] init];
  3. teacher1.info.classNum = @"11班";
  4. teacher1.address.detailAddress = @"海淀区";
  5. teacher1.name = @"L.Y.F.";
  6. teacher1.age = ;
  7.  
  8. Teacher *teacher2 = [[Teacher alloc] init];
  9. teacher2.info.classNum = @"12班";
  10. teacher2.address.detailAddress = @"立水桥";
  11. teacher2.name = @"P.K.";
  12. teacher2.age = ;
  13.  
  14. Teacher *teacher3 = [[Teacher alloc] init];
  15. teacher3.info.classNum = @"11班";
  16. teacher3.address.detailAddress = @"万盛路";
  17. teacher3.name = @"Y.X.";
  18. teacher3.age = ;
  19.  
  20. //将数据添加进数组
  21. NSMutableArray *teachers =
  22. [[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. 将DataTable转换为List,将List转换为DataTable的实现类

    将DataTable转换为List,将List转换为DataTable的实现类 public static class DataTableHelper { public static DataTabl ...

  2. html meta标签使用总结(转)

    之前学习前端中,对meta标签的了解仅仅只是这一句. <meta charset="UTF-8"> 但是打开任意的网站,其head标签内都有一列的meta标签.比如我博 ...

  3. GitHub在线创建文件夹

    点击New files按钮,然后输入含有slash字符(“/”)的文件名即可.也就是建立一个含有路径(目录)的文件,即会自动产生新文件夹. 点击Upload files按钮,然后直接把本地的文件夹(内 ...

  4. 好久没有写过SQL了,今天写了一句select in留存

    应同事要求,直接去接数据库的数据. 数据C里有一个name是查询的起始. 然后,B其实是一个多对多的中间表, 通过B查出id之后, 就可以在A里找到需要的数据了. select name from A ...

  5. 【POJ】2454.Jersey Politics

    题解 有种迷一样的讽刺效果 每个城市有1000头牛,然后你现在知道对于自己政党每个城市的选票,把城市划分成三个州,保证在至少两个州内获胜 找出前2K大的然后random_shuffle,直到前K个加起 ...

  6. Ionic Js三:下拉刷新

    在加载新数据的时候,我们需要实现下拉刷新效果,代码如下: HTML 代码 <body ng-app="starter" ng-controller="actions ...

  7. Java 集合之 Map

    Map 就是另一个顶级接口了,总感觉 Map 是 Collection 的子接口呢.Map 主要用于表示那些含有映射关系的数据,存储的是一组一组的键值对.Map 是允许你将某些对象与其它一些对象关联起 ...

  8. iOS Sprite Kit教程之场景的切换

    iOS Sprite Kit教程之场景的切换 Sprite Kit中切换场景 每一个场景都不是单独存在的.玩家可以从一个场景中切换到另外一个场景中.本小节,我们来讲解场景切换.在每一个游戏中都会使用到 ...

  9. ASP.net 简单分页的实现

    在自己的项目中有一个文章的管理页面需要用到分页, 这种分页方法是在黑马的一个视频中看到的,便用在了自己的项目中. 但是使用控件实在是太丑,虽然我写的也丑....... gridview 控件提供的分页 ...

  10. 【WIN10】使用VS生成appx安裝包,並安裝測試

    就算沒有微軟開發者帳號,我們也是可以創建appx的. 只不過有了帳號,我們可以把這個APPX與商店中的應用關聯,並上傳,方便許多罷了. 下面就說步驟: 1.生成appx 1)菜單:項目->應用商 ...