C语言中谓词的用法

NSArray *persons = @[jack, tom, rose, lucy, bob, john, lily];

//指定谓词条件

NSPredicate *pre1 = [NSPredicate predicateWithFormat:@"age < 40"];

for (Person *person in persons) {

//条件匹配

//验证对象是否符合谓词pre1

BOOL bool1 = [pre1 evaluateWithObject:person];

if (bool1) {

NSLog(@"%@", person);

}

}

//初始化谓词

NSPredicate *pre = [NSPredicate predicateWithFormat:@"age < %d", 40];

//数组中的方法,将符合谓词条件的数据筛选出来,返回一个新数组

NSArray *filteredArr = [persons filteredArrayUsingPredicate:pre];

NSLog(@"filteredArr is %@", filteredArr);

//逻辑运算符

// 运算符号 的加入 谓词不区分大小 && AND || OR

NSPredicate *pre3 = [NSPredicate predicateWithFormat:@"name = ‘rose‘ && age < %d", 30];

NSArray *array4 = [persons filteredArrayUsingPredicate:pre3];

NSLog(@"array4 is %@", array4);

// 关键字 注意字符串一定要添加‘‘

NSPredicate *pre4 = [NSPredicate predicateWithFormat:@"name IN {‘rose‘, ‘bruse‘, ‘jack‘}"];

NSArray *array5 = [persons filteredArrayUsingPredicate:pre4];

NSLog(@"%@", array5);

//BEGINSWITH 检查某个字是否以**开头

NSPredicate *pre5 = [NSPredicate predicateWithFormat:@"self.name BEGINSWITH ‘j‘"];

NSArray *array6 = [persons filteredArrayUsingPredicate:pre5];

NSLog(@"%@", array6);

//ENDSWITH 检查某个字符是以**结尾

NSPredicate *pre6 = [NSPredicate predicateWithFormat:@"self.name endswith ‘e‘"];

NSArray *array7 = [persons filteredArrayUsingPredicate:pre6];

NSLog(@"%@", array7);

// CONTAINS 检查包含某个字符

NSPredicate *pre8 = [NSPredicate predicateWithFormat:@"self.name CONTAINS ‘os‘"];

NSArray *array8 = [persons filteredArrayUsingPredicate:pre8];

NSLog(@"%@", array8);

时间: 2024-11-10 11:18:03

C语言中谓词的用法的相关文章

关于c语言中关键字extern用法。

看c语言的ppt看到extern中的生命外部变量,懵逼了.然后在网上查了关于extern的用法.都不是我想要的. 找了半个小时,又写写程序,算是明白了. extern声明外部变量时候,也就是在别的函数里面,一个文件已经有了外部变量,int A=13,B=0:当我别的函数想用这个A,B变量的值得时候, 可以在函数里面用extern声明即:extern A,B:我觉得也就是扩展的意思,有点类似java中继承的味道(楼主java半路转了啊,尴尬.). 测试代码如下: #include<stdio.h>

c语言中#和##的用法

一.一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: #include<cstdio> #include<climits> using namespace std; #define STR(s)     #s #define CONS(a,b)  int(a##e##b) int main() {     printf(STR(vck));           // 输出字符串"vck"     printf("%d\

基于c语言中调试工具的用法汇总(不包含gdb)【转】

转自:http://www.jb51.net/article/36829.htm 是不是只有编译的时候才知道程序写了错误?有没有在未编译的时候就让机器帮你检查错误的工具呢? 答案是:有!! splint工具.用一个最简单的HELLO WORLD来表述: ===================================== 复制代码 代码如下: /*错误很明显*/ #include <stdio.h> int main(void) { print("hello world\n&q

C语言中__attribute__的用法

http://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Function-Attributes.html http://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Variable-Attributes.html#Variable-Attributes GNU C的一大特色(却不被初学者所知)就是__attribute__机制.__attribute__可以设置函数属性(Function Attribute).变量属性(Variabl

Go语言中异常处理painc()和recover()的用法

Go语言中异常处理painc()和recover()的用法 1.Painc用法是:用于抛出错误.Recover()用法是:将Recover()写在defer中,并且在可能发生panic的地方之前,先调用此defer的东西(让系统方法域结束时,有代码要执行.)当程序遇到panic的时候(当然,也可以正常的调用出现的异常情况),系统将跳过后面的代码,进入defer,如果defer函数中recover(),则返回捕获到的panic的值. 2.代码: package main import "fmt&q

C语言中一些乱七八糟的用法与细节(不断更新)

用C语言比较多,这篇是平时攒下的.有些内容在工作后可能会很常见,但是不用容易忘,所以就写篇博客吧. 一.printf的用法 %*可以用来跳过字符,可以用于未知缩进.像下面一样. for(i = 1; i < 10; i++) { printf("%*c\r%*c\n",  9 - abs(i - 5), '*', abs(i - 5) + 1, '*'); } %[]可以用来读取指定的内容,%[^]可以用来忽略指定内容(正则表达式?) %m可以不带参数,输出产生的错误信息 二.关

C语言中关于scanf函数的用法

scanf()函数的控制串 函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息.可以读入任何固有类型的数据并自动把数值变换成适当的机内格式. 其调用格式为: scanf("<格式化字符串>",<地址表>); scanf()函数返回成功赋值的数据项数,出错时则返回EOF. 其控制串由三类字符构成

C语言中内存分配那些事儿

C程序的内存结构 C语言的之所以复杂,首先它的内存模型功不可没.不像某些那样的高级语言只需要在使用对象的时候,用new创建.所有之后的事情,你不需要操心.对于C语言,所有与内存相关的东西,都需要熟悉,否则,时间一久,总会踩着雷.下图是典型的一个C程序的内存结构,当然还有一个重要的前提,这样的一种布局是在虚拟内存中的: 关于虚拟内存内核维护了一个页表(page table),用来表示虚拟内存对物理内存地址或者磁盘(交换区,swap area)间的一种映射关系.并非所有的虚拟地址都需要在物理内存上映

C语言函数sscanf()的用法 (转载

在我的学习过程中,从文件读取数据是一件很麻烦的事,所幸有sscanf()函数. C语言函数sscanf()的用法 sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)