NSPredicate(谓词,作为过滤器使用)
过滤器的意思就是在一组数据中通过数组中元素的某个属性的值是多少,从而过滤出数组中这个值为多少的数组元素组。下面通过代码来说明一下吧
NSPredicate *p = [NSPredicate predicateWithFormat: @"selected == YES"]; // 通过selected属性来作为过滤的条件 NSArray *selectedArray = [self.canDetailDataArray filteredArrayUsingPredicate: p]; // 通过属性为selected==YES做为判断依据来过滤出数组中满足条件的所有元素 self.selectedArray = selectedArray; [self reloadFooterViewFen];
应用场景:例如我们的淘宝购物车有很多的订单,每个订单都会有一个是否要选中的属性,每选中一个订单下面显示支付的价格数据就会改变,便可以上面这种方法,很方便的就可以处理了!附上一张图吧
NSSortDescriptor(排序器)
NSMutableArray *array = [NSMutableArray array]; ··· 把含有date属性的模型数组赋值给array··· NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES]; // 使用date属性作为排序的依据并因ascending为YES做升序排序 [array sortUsingDescriptors:[NSArray arrayWithObject:sort]]; ps:NSSet的排序用法和NSArray用法类似
应用场景:例如我们在做即时通讯的时候,我们相互聊天时数据库中有多条数据,这个时候就是要根据时间顺序进行排序,这个时候使用上面这种方法就可以很好的处理了!
这个还是很强大的,也可以做多种的条件判断
如:
NSMutableArray *array = [NSMutableArray array]; ··· 把含有date属性price属性的模型数组赋值给array ··· NSSortDescriptor *dateSort = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES]; // 按日期升序 NSSortDescriptor *priceSort = [NSSortDescriptor sortDescriptorWithKey:@"price" ascending:YES]; // 按时间升序 [array sortUsingDescriptors:[NSArray arrayWithObjects:sort1, sort2, nil]]; // 将array数组按日期顺序和价格从小到大进行排序
很久没写博客了,因为这个最近有人问,写给人看的。