NSPredicate的用法(转)

使用Matlab与V-REP联合仿真 在Matlab中,我们可以使用V-REP提供的远程API(Application Programming Interface)来连接到V-REP仿真环境。为了连接Matlab与V-REP,我们需要在Matlab中添加V-REP的远程API函数库。你可以根据具体的需求编写Matlab脚本来控制V-REP场景中的机器人,并进行系统建模和仿真。一旦成功连接到V-REP,我们可以使用Matlab来控制V-REP场景中的机器人。在本文中,我们将介绍如何使用Matlab与V-REP进行联合仿真,并提供相应的源代码。 阅读详情

一般来说这种情况还是蛮多的,比如你从文件中读入了一个array1,然后想把程序中的一个array2中符合array1中内容的元素过滤出来。正常傻瓜一点就是两个for循环,一个一个进行比较,这样效率不高,而且代码也不好看。


其实一个循环或者无需循环就可以搞定了,那就需要用搞 NSPredicate这个类了~膜拜此类~


1)例子一,一个循环

NSArray *arrayFilter = [NSArray arrayWithObjects:@"pict", @"blackrain", @"ip", nil];
NSArray *arrayContents = [NSArray arrayWithObjects:@"I am a picture.", @"I am a guy", @"I am gagaga", @"ipad", @"iphone", nil];

我想过滤arrayContents的话只要循环 arrayFilter就好了

int i = 0, count = [arrayFilter count];
for(i = 0; i < count; i ++)
{
NSString *arrayItem = (NSString *)[arrayFilter objectAtIndex:i];
NSPredicate *filterPredicate = [[NSPredicate predicateWithFormat:@"SELF CONTAINS %@", arrayItem];
NSLog(@"Filtered array with filter %@, %@", arrayItem, [arrayContents filteredArrayUsingPredicate:filterPredicate]);
}

当然以上代码中arrayContent最好用mutable 的,这样就可以直接filter了,NSArray是不可修改的。


2)例子二,无需循环

NSArray *arrayFilter = [NSArray arrayWithObjects:@"abc1", @"abc2", nil];
NSArray *arrayContent = [NSArray arrayWithObjects:@"a1", @"abc1", @"abc4", @"abc2", nil];
NSPredicate *thePredicate = [NSPredicate predicateWithFormat:@"NOT (SELF in %@)", arrayFilter];
[arrayContent filterUsingPredicate:thePredicate];


这样arrayContent过滤出来的就是不包含 arrayFilter中的所有item了。

 

3)生成文件路径下文件集合列表

NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *defaultPath = [[NSBundle mainBundle] resourcePath];
    NSError *error;
    NSArray *directoryContents = [fileManager contentsOfDirectoryAtPath:defaultPath error:&error]


4)match的用法
1. 简单比较
  

NSString *match = @"imagexyz-999.png";
   NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF == %@", match];
   NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];


2. match里like的用法(类似Sql中的用法)

NSString *match = @"imagexyz*.png";
   NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like %@", match];
   NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];

 

3. 大小写比较
  [c]表示忽略大小写,[d]表示忽略重音,可以在一起使用,如下:

NSString *match = @"imagexyz*.png";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like[cd] %@", match];
    NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];?


4.使用正则

NSString *match = @"imagexyz-\\d{3}\\.png";  //imagexyz-123.png
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF matches %@", match];
    NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];


总结:
1) 当使用聚合类的操作符时是可以不需要循环的
2)当使用单个比较类的操作符时可以一个循环来搞定
PS:例子 一中尝试使用[@"SELF CONTAINS %@", arrayFilter] 来过滤会挂调,因为CONTAINS时字符串比较操作符,不是集合操作符。

 

原帖地址:http://www.cocoachina.com/bbs/read.php?tid=131824

【WorkBuddy从入门到精通实战教程】实战案例 第 41 章 论文阅读与文献综述 本文系统讲解如何用WorkBuddy高效阅读论文并撰写文献综述。针对“读了一天没记住”的痛点,提出“三遍阅读法”:快速评估相关性、结构化提炼核心内容、批判性分析局限。结合提示词工程,实现单篇精读、多篇对比与综述框架搭建,显著提升效率。强调学术诚信,严防AI幻觉,要求所有引用与数据必须回源核对。最终目标是借助AI辅助理解与组织,但坚持自主思考与写作,真正掌握科研能力。 阅读详情

相关推荐

WEBGL Shader零基础教程(四):片元着色器核心逻辑

本文系统介绍了WebGL渲染管线中片元着色器的核心概念与应用。主要内容包括:1)片元着色器在渲染管线中的定位与作用,作为逐像素处理单元接收插值数据并计算最终颜色;2)输入数据类型与使用规则,重点讲解varying变量和uniform变量的应用场景;3)颜色计算的核心逻辑,涵盖基础色、渐变、纹理采样和颜色混合;4)进阶特效实现与性能优化技巧,包括交互效果、内置函数组合和GPU计算优化;5)通过综合案例演示了纹理、波纹与交互效果的整合实现。文章提供了完整的代码示例和调试建议,为后续学习光照模型、后期处理等高级渲

分享知识,拥抱变化 1374

NSPredicate的用法

一般来说这种情况还是蛮多的,比如你从文件中读入了一个array1,然后想把程序中的一个array2中符合array1中内容的元素过滤出来。正常傻瓜一点就是两个for循环,一个一个进行比较,这样效率不高,而且代码也不好看。 其实一个循环或者无需循环就可以搞定了,那就需要用搞 NSPredicate这个类了~膜拜此类~ 1)例子一,一个循环 NSArray *arrayFil

iOS 移动开发 639

统信UOS开发环境支持Java

集成了JDK和多种IDE,为开发者提供了从代码编写、编译、调试到部署的一站式开发解决方案。

RZer的博客 2255

NSPredicate使用小记

大家在平常的开发过程中多多少少都会接触到数据筛选,那势必会用到NSPredicate 它的使用主要集中在两个方法中 NSArray- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate;NSMutableArray- (void)filterUsingPredicate:(NSPredicate *)predicate;

Salvador 812

2025软考信息安全工程师真题

2025信息安全工程师软考真题

qq_40424393的博客 1707

STM32驱动AD2S1210实现旋变解码与角度读取

旋转变压器作为一种耐高温、抗振动的角度传感器,在工业伺服、机器人关节和电动汽车电驱等场景中占据重要地位。其输出信号需要经过专用转换芯片处理才能被MCU高效使用。AD2S1210是一款典型的旋变数字转换器(RDC),内部采用Type II型跟踪环,将模拟SIN/COS信号实时解算为数字角度与速度,降低了处理器负担并提升抗干扰能力。本文基于STM32平台,详细介绍了AD2S1210的硬件接线、SPI通信配置、寄存器初始化流程,以及读取位置数据时的SAMPLE脉冲时序等关键实现。同时总结了常见故障如全FF、角度跳

weixin_34194829的博客 194

Swift详解之NSPredicate

言:谓词在集合过滤以及CoreData中有着广泛的应用。本文以Playground上的Swift代码为例,讲解如何使用NSPredicate。 准备工作 先在Playground上建立一个数组,为后文的谓词过滤做准备.这里我们充血了Description属性来为提供更加明显的输出。 import UIKit class Person:NSObject { var n...

dengji2627的博客 342

Docker 磁盘占用过多问题处理过程记录

Docker 磁盘爆满问题处理

MR.骑士道 3554

iOS开发 快速高效的筛选大量数组数据

/谓词过滤查找数组中年份相同的数据,这里找到年份相同的数据 "yearName"为数组里面的属性值key,必须为字符串。iOS开发经常遇到数组里面有大量数据,然后从其中拿出指定的数据,大部分情况下会使用for循环等循环遍历的方式,其实有更高效的方式,就是用谓词方法,也就是用NSPredicate这个类去筛选和比较数据。

zhaofahseng的博客 1287

国社科基金申报书“选题与说明依据”用AI怎么写?借助Gemini 3 Pro一次理清研究演进逻辑

研究进展部分要明确指出已有研究的不足与局限,比如方法不足、数据或材料受限、研究视角单一等等局限,之后要找准研究切入点,自然引申出自己的研究问题。为提升课题申报书的质量,学术史梳理要遵循述评结合、中外结合、新老结合的原则,不仅“述”,更要“评”,兼顾国内研究与国际学术动态,统筹经典研究与最新成果。它是对选题的整体概述,需阐明研究的具体问题、视角以及核心概念。2)存在问题或争议:结合已有研究或实践现状,指出该领域在理论建构、测量工具、实践应用或研究结论方面仍存在的不足、空白或争议,明确研究的必要性;

智能AI让学术科研更容易 942

基于DSIFT多尺度图像融合的MATLAB代码

多尺度图像融合是一种常用的图像处理技术,它可以将具有不同尺度和空间频率特征的图像融合成一幅更具信息丰富度和视觉效果的图像。DSIFT算法是一种基于SIFT算法的改进版本,它在提取图像特征时采用了密集采样的方法,能够有效地提取图像的局部特征。多尺度图像融合基于DSIFT算法的思想,通过在不同尺度下提取图像的DSIFT特征,并将这些特征进行融合,得到最终的融合图像。然后,通过DSIFT算法提取了两幅图像的特征。通过运行上述代码,我们可以在MATLAB中实现基于DSIFT多尺度图像融合的算法,并观察到融合结果。

IELLQUI9的博客 181

iOS学习之CoreData模糊查找,分页查找,多模型文件处理

坚持 成长 每日一篇 iOS学习之CoreData模糊查找,分页查找,多模型文件处理

chirs的专栏 1192

我的python学习之路

Python 是一门功能强大且易于学习的编程语言,广泛应用于数据分析、人工智能、Web 开发、自动化等领域。以下是一个 Python 学习路径的总结,帮助你系统地掌握 Python 编程。

数据知道的博客 3万+

[oc] NSPredicate的用法 【转】

一般来说这种情况还是蛮多的,比如你从文件中读入了一个array1,然后想把程序中的一个array2中符合array1中内容的元素过滤出来。 正 常傻瓜一点就是两个for循环,一个一个进行比较,这样效率不高,而且代码也不好看。 其实一个循环或者无需循环就可以搞定了,那就需要用搞 NSPredicate这个类了~膜拜此类~ 开始之前要知道 NSArray filteredArrayUsingP

jinjiantong的专栏 479

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

NSPredicate的用法(转)

一般来说这种情况还是蛮多的,比如你从文件中读入了一个array1,然后想把程序中的一个array2中符合array1中内容的元素过滤出来。 正 常傻瓜一点就是两个for循环,一个一个进行比较,这样效率不高,而且代码也不好看。 其实一个循环或者无需循环就可以搞定了,那就需要用搞 NSPredicate这个类了~膜拜此类~ 1)例子一,一个循环 NSArray *a

smc_baby的博客 290

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

NSPredicate类在OC中用法

基本概念: cocoa中提供了NSPredicate类,指定过滤器的条件,将符合的对象保留下来 创建谓词:

richard_如风的专栏 2064

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

NSPredicate 的相关用法

- (void)viewDidLoad {     [super viewDidLoad];     // Do any additional setup after loading the view, typically from a nib.     /**      *NSPredicate  的相关用法      */     [self testP

jq2530469200的博客 363

数组过滤与NSPredicate类的用法

<br />//[yourArray filterUsingPredicate:[NSPredicate predicateWithFormat:@"(numDuration => %@)",[NSNumber numberWithInt:100]]];   //numDuration是yourArray数组成员的成员变量,是NSNumber类型变量<br /><br /> <br />NSPredicate *predicate = [NSPredicatepredicateWithBlock:^(id

StudyRecord的专栏 6223

IOS中NSPredicate的用法

NSPredicate是一个Foundation类,它指定数据被获取或者过滤的方式。它的查询语言就像SQL的WHERE和正则表达式的交叉一样,提供了具有表现力的,自然语言界面来定义一个集合被搜寻的逻辑条件。

陈思浓 | Simon 3456

Cocoa过滤器NSPredicate的完全用法

从下面的各个例子中,可以体会到NSPredicate的强大的能力,作为正则表达式的核心类,确实优化了很多的字符串及其正则相关的操作的流程。使代码简洁,而强大! Cocoa用NSPredicate描述查询的方式,原理类似于在数据库中进行查询 计算谓词: //基本的查询 NSPredicate *predicate; predicate = [NSPredicate predicateWit

程序人生 2万+

NSPredicate

简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取。 定义(最常用到的方法): NSPredicate *ca = [NSPredicate predicateWithFormat:(NSString *), ...];Format: (1)比较运算符>,=, 可用于数值及字符串 例:@"number > 100"

6万+

更高端点 - 正则表达式(NSPredicate用法)

简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取。 定义(最常用到的方法): [cpp] view plaincopy NSPredicate *ca = [NSPredicate predicateWithFormat:(NSString *), ...]; 

俊彩在未来 1046

【学习ios之路:UI系列】NSPredicate相关用法

NSPredicate           NSPredicate是一个Foundation类,它指定数据被获取或者过滤的方式。       它的查询语言就像SQL的WHERE和正则表达式的交叉一样,提供了具有表现力的,自然语言界面来定义一个集合被搜寻的逻辑条件。       NSPredicate的几种用法       ①常见形式 NSPredicate *

Forever_YouSay 1978
上一篇: Maya常用快捷键(转)
下一篇: UIView自代的动画(转)
woodcol
博客等级 码龄19年 288粉丝 429原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值