Objective-C(十八、谓语使用及实例说明)——iOS开发基础
结合之前的学习笔记以及參考《Objective-C编程全解(第三版)》,对Objective-C知识点进行梳理总结。知识点一直在变,仅仅是作为參考,以苹果官方文档为准~
十八、谓语的使用及实例说明
首先先介绍基本经常使用的谓词:
(1)逻辑运算符 && AND || OR 都能够用
(2)IN包括
(3)模糊查询
a、以……开头 BEGINSWITH
b、以……结尾 ENDSWITH
c、包括….字符 CONTAINS
(4)用like进行模糊查询
通配符:*表示随意个字符 ?表示单个字符
like *a 以a结尾
like a* 以a开头
like *a* 包括a字符
like ?a* 第二个字符为a的字符串
实例说明:
创建Book类,Book.h
@interface Book : NSObject
{
NSInteger _price;
NSString* _bookName;
}
- (instancetype)initWithPrice:(NSInteger)price andBookName:(NSString *)bookName;
@end
Book.h
#import "Book.h"
@implementation Book
- (instancetype)initWithPrice:(NSInteger)price andBookName:(NSString *)bookName {
if (self = [super init]) {
_price = price;
_bookName = bookName;
}
return self;
}
- (NSString *)description {
return [NSString stringWithFormat:@"Book price:%li,named %@",_price,_bookName];
}
@end
main.m
int main(int argc, const char * argv[]) {
@autoreleasepool {
Book* book1 = [[Book alloc] initWithPrice:20 andBookName:@"C Programming"];
Book* book2 = [[Book alloc] initWithPrice:32 andBookName:@"C++ Programming"];
Book* book3 = [[Book alloc] initWithPrice:18 andBookName:@"Java Programming"];
Book* book4 = [[Book alloc] initWithPrice:45 andBookName:@"OC guiding"];
Book* book5 = [[Book alloc] initWithPrice:28 andBookName:@"iOS guiding"];
NSArray* books = [NSArray arrayWithObjects:book1,book2,book3,book4,book5, nil];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"price > %i",30];
NSArray *filterArray = [books filteredArrayUsingPredicate:predicate];
NSLog(@"%@",filterArray);
// 逻辑运算符 和 IN
predicate = [NSPredicate predicateWithFormat:@"bookName IN {'C Programming','C++ Programming'} AND price > 30"];
filterArray = [books filteredArrayUsingPredicate:predicate];
NSLog(@"%@",filterArray);
// 模糊查询 和 用通配符查询
predicate = [NSPredicate predicateWithFormat:@"bookName CONTAINS 'guiding' || bookName like '*Program*' "]; //包括guiding或者包括Program
filterArray = [books filteredArrayUsingPredicate:predicate];
NSLog(@"%@",filterArray);
}
return 0;
}
output:
2015-07-09 20:17:24.403 exercise_谓语[632:9877] (
"Book price:32,named C++ Programming",
"Book price:45,named OC guiding"
)
2015-07-09 20:17:24.404 exercise_谓语[632:9877] (
"Book price:32,named C++ Programming"
)
2015-07-09 20:17:24.407 exercise_谓语[632:9877] (
"Book price:20,named C Programming",
"Book price:32,named C++ Programming",
"Book price:18,named Java Programming",
"Book price:45,named OC guiding",
"Book price:28,named iOS guiding"
)
Objective-C(十八、谓语使用及实例说明)——iOS开发基础的更多相关文章
- Objective-C(十七、KVC键值编码及实例说明)——iOS开发基础
结合之前的学习笔记以及參考<Objective-C编程全解(第三版)>,对Objective-C知识点进行梳理总结.知识点一直在变,仅仅是作为參考,以苹果官方文档为准~ 十七.键值编码 K ...
- Objective-C(十九、通知-消息发送模式之中的一个)——iOS开发基础
结合之前的学习笔记以及參考<Objective-C编程全解(第三版)>,对Objective-C知识点进行梳理总结. 知识点一直在变.仅仅是作为參考.以苹果官方文档为准~ 十九.通知-消息 ...
- 斯坦福第十八课:应用实例:图片文字识别(Application Example: Photo OCR)
18.1 问题描述和流程图 18.2 滑动窗口 18.3 获取大量数据和人工数据 18.4 上限分析:哪部分管道的接下去做 18.1 问题描述和流程图
- Ng第十八课:应用实例:图片文字识别(Application Example: Photo OCR)
18.1 问题描述和流程图 18.2 滑动窗口 18.3 获取大量数据和人工数据 18.4 上限分析:哪部分管道的接下去做 18.1 问题描述和流程图 图像文字识别应用所作的事是,从一张给定 ...
- Python开发【第十八篇】Web框架之Django【基础篇】
一.简介 Python下有许多款不同的 Web 框架,Django 是重量级选手中最有代表性的一位,许多成功的网站和APP都基于 Django. Django 是一个开放源代码的Web应用框架,由 P ...
- 跟我学SpringCloud | 第十八篇:微服务 Docker 化之基础环境
1. 容器化 Docker 的横空出世,给了容器技术带来了质的飞跃,Docker 标准化了服务的基础设施,统一了应用的打包分发,部署以及操作系统相关类库等,解决了测试生产部署时环境差异的问题.对于运维 ...
- Android项目实战(四十八):架构之组件化开发
什么要组件化开发? 看一下普通项目的结构 , 一个项目下有多个Module(左侧图黑体目录),但是只有一个application,0个或多个library(在每个medel下的build.gradle ...
- 第十八篇:简易版web服务器开发
在上篇有实现了一个静态的web服务器,可以接收web浏览器的请求,随后对请求消息进行解析,获取客户想要文件的文件名,随后根据文件名返回响应消息:那么这篇我们对该web服务器进行改善,通过多任务.非阻塞 ...
- iOS开发基础之ivars(实例变量)与@property(属性)
Objective-C带来了一个重大改进就是Non-fragile ivar.使得i一个类可以随意增加实例变量,不必对子类重新编译.对框架开发者(如苹果)有重大意义. 最新的编译器支持@propert ...
随机推荐
- web请求的处理流程
web请求的处理流程如下: 1.客户发起请求到服务器网卡:2.服务器网卡接受到请求后转交给内核处理:3.内核根据请求对应的套接字,将请求交给工作在用户空间的Web服务器进程4.Web服务器进程根据用户 ...
- Ubuntu 10.04下安装Opengl glx
1.安装OpenGL Library sudo apt-get install build-essential 2. 安装OpenGL Utilities sudo apt-get install l ...
- F5(调试)和服务器控件
一.调试 背景: 今天调试的时候发现我进入的网址是http://×××.com:7813/webaspx/System/Login.aspx(由于代码在公司,我就没有截图,等了半天显示无法加载该页面) ...
- IEquatable(T) interface in .Net
原文:http://weblogs.asp.net/pawanmishra/iequatable-t-interface-in-net 泛型方法: public static bool AreEqua ...
- jquery cookie 删除不了的处理办法
$.cookie(name, null);$.cookie(name, null, {path : "/"}); Jquery Cookie的值直接设置null,并不能直接删除Co ...
- windows应用中调用DLL一步步试验
试验环境: PC:win10 build 10143 IDE: vs2015 RC WinPhone: win10 build 10136 简单界面,点按钮,算加法 一.主程用C++ 1.新建visu ...
- 使apache解析域名到目录的方法
apache如何将一个域名自动定位到目录 有两种解决办法 首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 ...
- 翻译Oracle文档--SYSDBA和SYSOPER系统权限
SYSDBA和SYSOPER是管理权限,被用户来执行高级管理操作例如:创建 开启/关闭 备份/恢复 数据库.SYSDBA系统权限是针对想给予完全授权的数据库管理员SYSOPER系统权限允许一个用户执行 ...
- Android Support Library package简介
转自http://my.oschina.net/chengliqun/blog/148451 N久未做android了,以前做的时候,2.2才刚出来,现在android都更新到了4.3了,而从前一段时 ...
- JavaWeb学习笔记--Servlet代码集
目录: 登录系统提交表单数据打开PDFCookieURL传递参数URL重写跟踪会话使用HttpSession对象跟踪会话Servlet间协作过滤器Filter 登录系统 <!DOCTYPE HT ...