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"
)

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-07 23:08:09

Objective-C(十八、谓语使用及实例说明)——iOS开发基础的相关文章

Objective-C(十七、KVC键值编码及实例说明)——iOS开发基础

结合之前的学习笔记以及参考<Objective-C编程全解(第三版)>,对Objective-C知识点进行梳理总结.知识点一直在变,只是作为参考,以苹果官方文档为准~ 十七.键值编码 KVC 关于KVC的知识点将通过下列例子来展开说明: Person.h文件,Person类拥有name和age两个成员变量 @interface Person : NSObject { @private NSString *_name; NSInteger _age; } - (void)setAge:(NSIn

斯坦福第十八课:应用实例:图片文字识别(Application Example: Photo OCR)

18.1  问题描述和流程图 18.2  滑动窗口 18.3  获取大量数据和人工数据 18.4  上限分析:哪部分管道的接下去做 18.1  问题描述和流程图 图像文字识别应用所作的事是,从一张给定的图片中识别文字.这比从一份扫描文档中 识别文字要复杂的多. 为了完成这样的工作,需要采取如下步骤: 为了完成这样的工作,需要采取如下步骤: 1. 文字侦测(Text detection)——将图片上的文字与其他环境对象分离开来 2. 字符切分(Character segmentation)——将文

Objective-C(十九、通知-消息发送模式之一)——iOS开发基础

结合之前的学习笔记以及参考<Objective-C编程全解(第三版)>,对Objective-C知识点进行梳理总结.知识点一直在变,只是作为参考,以苹果官方文档为准~ 十九.通知-消息发送模式之一 1.几个基本概念 (1)通知:在面向对象的程序中,有时需要将发生的时间通知给多个对象的消息发送模式: (2)通知中心:期望取得通知的对象预先向通知中心注册期望取得的通知: (3)发送:某对象向通知中心发送消息发送请求,只有注册过该通知单额对象,都可获得通知中心推送的消息: (4)观察者:消息发送目标

Ng第十八课:应用实例:图片文字识别(Application Example: Photo OCR)

18.1  问题描述和流程图 18.2  滑动窗口 18.3  获取大量数据和人工数据 18.4  上限分析:哪部分管道的接下去做 18.1  问题描述和流程图 图像文字识别应用所作的事是,从一张给定的图片中识别文字.这比从一份扫描文档中 识别文字要复杂的多. 为了完成这样的工作,需要采取如下步骤: 1. 文字侦测(Text detection)--将图片上的文字与其他环境对象分离开来 2. 字符切分(Character segmentation)--将文字分割成一个个单一的字符 3. 字符分类

跟我学SpringCloud | 第十八篇:微服务 Docker 化之基础环境

1. 容器化 Docker 的横空出世,给了容器技术带来了质的飞跃,Docker 标准化了服务的基础设施,统一了应用的打包分发,部署以及操作系统相关类库等,解决了测试生产部署时环境差异的问题.对于运维来讲,由于镜像的不可变性,更容易进行服务部署和回滚操作.利用各种第三方容器管理平台,实现一键部署.动态伸缩等操作变的轻而易举. 2. 基础镜像选择 在操作系统的选择上,可选择传统的 CentOS . Ubuntu 或者更为轻量化的 Alpine .比如 CentOS 或者 Ubuntu 的镜像都在

Objective-C(十六、内存管理,自动释放池,ARC,强指针,弱指针,方法族)——iOS开发基础

结合之前的学习笔记以及参考<Objective-C编程全解(第三版)>,对Objective-C知识点进行梳理总结.知识点一直在变,只是作为参考,以苹果官方文档为准~ 十六.内存管理相关知识(二) 1.autorelease,自动释放机制 - (instancetype)autorelease; (1)自动释放池的创建 iOS5.0之前 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; //进行一系列操作 //此处不可以使用

iOS开发基础之ivars(实例变量)与@property(属性)

Objective-C带来了一个重大改进就是Non-fragile ivar.使得i一个类可以随意增加实例变量,不必对子类重新编译.对框架开发者(如苹果)有重大意义. 最新的编译器支持@property可以自动synthesize实例变量.等于ivar+getter+setter方法. 属性修饰关键字 atomic.LLVM 4新增加的特性.是指存取器方法是thread-safe.并不保证整个变量是thread-safe的.如 NSMutableArray *stuff.self.stuff和s

Bootstrap &lt;基础二十八&gt;列表组

列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素 <ul> 添加 class .list-group. 向 <li> 添加 class .list-group-item. 下面的实例演示了这点: <!DOCTYPE html> <html> <head> <title>Bootstrap 实例 - 基本的列表组</title> <link href="/boo

会员卡管理系统技术解析(十八)Timer定时监听

会员卡管理系统技术解析(十八)Timer定时监听 在web应用中,有时候客户需要一些定时程序,不需要客户自己去操作,而是由应用程序自行触发(代理)执行某些操作.这个时候监听与定时器的配合使用就基本可以实现这个需求了.网上很多代码并不完整,水平未到,看得太吃力了.下面以系统每天00:00:00进行的当日最大单据数维护进行实例解析. 首先,建立相关的包河类,如下图: 图1 然后,在"web.xml"中对定时器和监听类注册,代码如下: <servlet> <servlet-