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 ...
随机推荐
- C# 对象深复制
Mark: //实现IClonable接口并重写Clone方法就可以实现深克隆了 #region ICloneable 成员 public object Clone() { MemoryStream ...
- input(file)浏览按钮美化 (巨简单),网上那些都弱爆了
<!DOCTYPE HTML> <html> <body> <input type="file" id="upload" ...
- 简单JS多级下拉框无刷新
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- OC基础 可变数组与不可变数组的使用
OC基础 可变数组与不可变数组的使用 1.不可变数组 1.1不可变数组的创建 //实例方法 NSArray *array = [[NSArray alloc] initWithObjects:&quo ...
- C#设置按钮三态背景图片
1.闪电事件,注意添加手动或者点击按钮->属性中的闪电->下面对应各种事件 在上面: private void button1_MouseHover(object sender, Even ...
- 快速搭建Android 开发环境-使用ADT Bundle
一.搭建Android开发环境 近日要学Android开发基础,就着手搭建Windows下的Android开发环境. 找了一些相关的博文参考,基本上都是要分别下载和安装JDK, Eclipse, An ...
- shell中的type命令
type [-aftpP] name [name,...] -a 打印name的所有可能情况,比如type -a ls,会打印ls is aliased to 'ls --color=auto'和ls ...
- thinkPHP中省市级联下拉列表
公共函数放置位置common文件夹下common.php文件(此段代码也可放置在要使用的控制器中) 封装的下拉列表函数代码: /** * 根据列表拼装成一个下拉列表 ADD BY CK * @para ...
- css之自动换行-设计师零张
自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺让人头疼,下面介绍的是CSS如何实现换行的方法 对于div,p等块级元素 正常文字的换行(亚洲文字和非亚洲文字)元素拥 ...
- c# List集合的Find方法适用
CabinEntity为你定义的实体 CabinEntity existCabin = listCabins.Find(delegate(CabinEntity cabinE) ...