NSpredicate 常用方法

    // 谓词的条件查询 > 、< 、==、!=
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"age > 20"];
NSArray *arr1 = [stuArray filteredArrayUsingPredicate:predicate1];
NSLog(@"arr1 = %@",arr1); //使用表达式
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"age > 20 && height > 170"];
NSArray *arr2 = [stuArray filteredArrayUsingPredicate:predicate2];
NSLog(@"arr2 = %@",arr2); // 字符串作为条件要使用单引号‘’,name == 'lisi'
NSPredicate *predicate3 = [NSPredicate predicateWithFormat:@"name == 'lisi'"];
NSArray *arr3 = [stuArray filteredArrayUsingPredicate:predicate3];
NSLog(@"arr3 = %@",arr3); // 使用占位符
NSPredicate *predicate4 = [NSPredicate predicateWithFormat:@"age == %ld",];
NSArray *arr4 = [stuArray filteredArrayUsingPredicate:predicate4];
NSLog(@"arr4 = %@",arr4); // IN {'lisi','wangwu'} 在包含的条件内
NSPredicate *predicate5 = [NSPredicate predicateWithFormat:@"height IN {165,180}"];
NSArray *arr5 = [stuArray filteredArrayUsingPredicate:predicate5];
NSLog(@"arr5 = %@",arr5); //BEGINSWITH 以什么字符串开头
NSPredicate *predicate6 = [NSPredicate predicateWithFormat:@"name BEGINSWITH[c] 'R'"];
NSArray *arr6 = [stuArray filteredArrayUsingPredicate:predicate6];
NSLog(@"arr6 = %@",arr6); // ENDSWITH 以什么字符串结尾
NSPredicate *predicate7 = [NSPredicate predicateWithFormat:@"name ENDSWITH 'e'"];
NSArray *arr7 = [stuArray filteredArrayUsingPredicate:predicate7];
NSLog(@"arr7 = %@",arr7); // CONTAINS 包含某个字符串
NSPredicate *predicate8 = [NSPredicate predicateWithFormat:@"name CONTAINS 'a'"];
NSArray *arr8 = [stuArray filteredArrayUsingPredicate:predicate8];
NSLog(@"arr8 = %@",arr8); /* LIKE: 1、 LIKE '*a*' 包含某个字符串
2、 LIKE 'j*' 以某个字符串开头
3、 LIKE '*e 以某个字符串结尾
4、 LIKE '?a*' 第二个字符串是 a 的
5、 LIKE[c] 'r*' [c] 表示忽略大小写 *: 星号表示任意个字符位,?问号,表示一个字符位,[c] 表示忽略大小写 */ NSPredicate *predicate9 = [NSPredicate predicateWithFormat:@"name LIKE '*a*'"];
NSArray *arr9 = [stuArray filteredArrayUsingPredicate:predicate9];
NSLog(@"arr9 = %@",arr9); NSPredicate *predicate10 = [NSPredicate predicateWithFormat:@"name LIKE[c] 'r*'"];
NSArray *arr10 = [stuArray filteredArrayUsingPredicate:predicate10];
NSLog(@"arr10 = %@",arr10); NSPredicate *predicate11 = [NSPredicate predicateWithFormat:@"name LIKE '*e'"];
NSArray *arr11 = [stuArray filteredArrayUsingPredicate:predicate11];
NSLog(@"arr11 = %@",arr11); NSPredicate *predicate12 = [NSPredicate predicateWithFormat:@"name LIKE '?a*'"];
NSArray *arr12 = [stuArray filteredArrayUsingPredicate:predicate12];
NSLog(@"arr12 = %@",arr12); // NSMutableArray 使用 filterUsingPredicate,不会返回一个新数组,而是直接覆盖原来的可变数组
NSPredicate *predicate13 = [NSPredicate predicateWithFormat:@"name LIKE '?a*'"];
[stuArray filterUsingPredicate:predicate13];
NSLog(@"stuArray = %@",stuArray);

本文GitHub地址https://github.com/zhangkiwi/iOS_SN_NSPredicate

iOS-OC-基础-NSPredicate常用方法的更多相关文章

  1. iOS 阶段学习第11天笔记(OC基础知识)

    iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import  用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...

  2. iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误

    在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握 ...

  3. iOS 面试基础题目

    转载: iOS 面试基础题目 题目来自博客:面试百度的记录,有些问题我能回答一下,不能回答的或有更好的回答我放个相关链接供参考. 1面 Objective C runtime library:Obje ...

  4. OC基础笔记目录

    OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象 ...

  5. ios+oc面试题

    ios+oc面试题     浅复制和深复制的区别?//浅拷贝和深拷贝答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象深层复制(mutableCo ...

  6. OC基础16:复制对象

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.浅复制即是指针赋值,复制对象的修改会影 ...

  7. OC基础8:分类和协议

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.关于分类(category): (1) ...

  8. 【IOS学习基础】NSObject.h学习

    一.<NSObject>协议和代理模式 1.在NSObject.h头文件中,我们可以看到 // NSObject类是默认遵守<NSObject>协议的 @interface N ...

  9. OC基础回想(十二)协议

    在OC基础(十一)中我们讨论了类别和非正式协议的奇异之处.在使用非正式协议时.能够仅仅实现你想要获得响应的方法.也不必在对象中声明不论什么内容来表示该对象可用作托付对象. 全部这些任务能够用最少的代码 ...

  10. 一些iOS面试基础题总结

    一些iOS面试基础题总结 目录 多线程 AutoLayout objc_msgSend Runtime 消息转发 Category NSObject 与 objc_class Runloop Auto ...

随机推荐

  1. 外观模式-facade实现interface的方式(简单工厂+facade组合使用)

    Façade 外观模式 1.Façade实现为interface的具体过程 在Façade.java 接口 工厂 将构造方法私有  static 方法产生一个工厂 此时 客户端不知道 Façade的存 ...

  2. c#串口编程时,忽略跨线程检查报错

    1.直接在main_Form_Load的初始化中加 //忽略跨线程检查 // System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls ...

  3. MFC软件工程架构模型-模式窗口-非模式窗口

    1. SDI单文档界面: MDI多文档界面.有多个"关闭-最大化-最小化"等这样的窗口嵌套 基于对话框的软件模型 2.模式对话框和非模式对话框 模式对话框:使用DoMoel(),弹 ...

  4. 《APUE》-第五章标准IO库

    大多数UNIX应用程序都使用I/O库,本章说明了该库所包含的所有函数,以及某些实现细节和效率方面的考虑.同时需要重点关注标准I/O使用了缓冲的技术,但同时也是因为它的出现,产生了很多细节上的问题. 流 ...

  5. 修改mysql错误提示语言的方法

    百度真的太恶心太无能了. 装了个mysql5,结果发现错误提示语言是法语. 然后我就想改成把错误提示语改成英语. 然后我使用各种关键字和方法百度了一个上午,居然全TM是告诉我怎么处理mysql中文乱码 ...

  6. Meta 整合

    Meta 整合:http://segmentfault.com/a/1190000002407912

  7. 【笔记】Unix 平台标准

    POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEE ...

  8. Java学习笔记--Swing2D图形

    1.处理2D图形 要想使用java 2D库绘制图形,需要获得一个Graphics2D类对象.这个类是Graphics类的子类.paintComponent方法自动获得一个Graphics2D类对象,我 ...

  9. [Ioi2007]Miners 矿工配餐(BZOJ1806)

    [Ioi2007]Miners 矿工配餐 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 214  Solved: 128 Description 现有两 ...

  10. hdu 六度分离

    http://acm.hdu.edu.cn/showproblem.php?pid=1869 #include <cstdio> #include <cstring> #inc ...