通常情况下,根据一个条件在数组中查询出匹配的对象的方式有如下几种:
(1)遍历数组,然后将每一个Item和这个条件进行比对,过滤出匹配的对象
显然这个效率比较低
(2)iOS提供另一个效率较高的查询方法,谓词NSPredicate,使用方法如下
1.NSString 对象 NSArray *array =@["123", @"234" , @"345"]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains [cd] %@", "2"]; NSArray *filterdArray = [array filterdArrayUsingPredicate:predicate]; NSLog(@"%@", filterdArray ); //output : @"123", "234" 2.含有属性的对象 @interface Person: NSObject { NSString *_name; NSString *_telephone; NSInteger _id; } @property (nonatomic, copy) NSString *name; @property (nonatomic, copy) NSString *telephone; @property (nonatomic, assign) NSInteger id; @end // 1).等于查询 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@", "Ansel"]; NSArray *filteredArray = [array filteredArrayUsingPredicate:predicate]; 2).模糊查询 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS %@", @"A"]; //predicate只能是对象 NSArray *filteredArray = [array filteredArrayUsingPredicate:predicate];
更详细的用法,请见这个帖子:
http://www.cnblogs.com/thefeelingofsimple/archive/2013/01/31/2886915.html
相关推荐
轻巧的数据转换工具,上限是三层数据,二维对象数组(对象数组中的对象数组)
可以让Xcode的控制支持array 和dictionary对象的中文打印,Xcode默认打印的是Unicode的码. 此分类的原理就是Unicode的转码. 使用简单,只需要导入分类即可,不需要导入任何头文件. github : ...
在C语言中的数组可以保存任意类型的数据。 3.存储的内存是连续的 二、不可变数组 0.定义数组 //定义一个空数组 NSArray *array1 = [NSArray array] ; array1 = @[];//空数组 //通过指定对象创建数组 array1 = [...
iOS开发·必会的算法操作:字符串数组排序 模型对象数组排序
Xcode 打印中文乱码
数组是线性结构是容器类型,是一块连续的内存空间, iOS 中用 NSArray 和 NSMutableArray 集合类型,用来存放对象类型,其中 NSArray是不可变类型, NSMutableArray 是可变类型,能够对数组中元素进行增删改查. ...
不管你的类中有数组、字典、其他对象类型还是基本类型,不管你要转的是单一对象还是对象数组,统统只要一行代码。 三、自动转换NSNull值,有时候从服务端传来的是空值,这时会根据你定义的属性类型自动转换为合适的...
集合的遍历操作是开发中最常见的操作之一,从C语言经典的for循环到利用多核cpu的优势进行遍历,开发中ios有若干集合遍历方法,本文通过研究和测试比较了各个操作方法的效率和优略势,并总结几个使用集合遍历时的小...
mongodb在计算集合数组值时候,我们通常会想到使用$group与$sum,但是如果是数组里面多个json对象,并且还需要根据条件过滤多个对象的内容该如何处理? 现在让我们来实现它,假设mongodb中有个user集合,其数据内容...
filter方法支持 正则语句检索,功能很强大filter方法是生成一个新的对象,数组本身没有变化封装一个简单的delete方法即可 对自身重指向如果知道数组中
数组(可变与不可变)和字典(可变与不可变)中元素对象的类型,必须是NSString,NSArray,NSDictionary,NSData,否则不能直接写入文件 #pragma mark---NSString的写入与读取--- //1:获取路径 NSString *docunments = ...
{key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种...
这些类是在内部使用实现的,以跟踪数组的哪些条目中有对象,并使用来保存对象本身。 版本 1.5.2 安装和使用 将 、 、 和文件复制到您的项目中,然后像或一样使用,替换或DSMutableSparseArray 。 应该与 iOS 或 Mac...
VIEWCONTROLLER : [[OneController alloc]init], //控制器对象 NORMAL_ICON : @"icon_classTable", //正常状态的Icon 名称 SELECTED_ICON : @"icon_classTable_selected", //选中状态的Icon 名称 TITLE : @...
先将一个数组作为合并后的数组, 然后遍历第二个数组的每项元素, 一一对比, 直到找到合适的, 就插入进去; 简单思路: 设置数组C, 对比A和B数组的首项元素, 找到最小的, 就放入数组C,依次进行下去. 代码如下: - ...
使用类别,NSDictionary property给字典类添加一个对象方法,在.m使用self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull value, BOOL * _Nonnull stop)实现对value值得不同判断,不同的key值...
NSPredicate应用,包括以下几个部分: 1、字符串,正则表达式的匹配; 2、字符串数组NSArray和NSMutableArray的快捷过滤方式; 3、自定义对象数组NSArray和NSMutableArray的快捷过滤方式;
一,代码。... //直接排序对象 NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:nil ascending:YES]; NSArray *descriptors = [NSArray arrayWithObject:descriptor]; NSAr
后者对象中包含对象想转换成NSDictionary字典时,也是特别麻烦。 为了解决这类问题,本人特意封装了一套 字典模型数组-模型数组的深层转换 来解决这类问题,方便开发,为了给ios开发着带来方便,特意贡献出来,和...
实现中等难度通讯录。需求: 1、定义联系⼈类Contact。实例变量:姓名(拼⾳,⾸...即这个字典包含多个键值对,key是26个字⺟,value是数组,数组⾥存放的是 Color对象(包含name和colorValue)。需要⾃⼰创建Color类。