iOS 对NSMutableArray进行排序和过滤

版权声明:允许转载,只要标注转载地址即可 https://blog.csdn.net/z979451341/article/details/79046205

根据实体类的属性进行排序,这个属性排序还可以增加几个排序规则,前后的规则先判断,如果一样的则根据第二个排序规则来判断

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"data" ascending:YES];//其中,price为数组中的对象的属性,这个针对数组中存放对象比较更简洁方便
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:&sortDescriptor count:1];
    [self.dataArray sortUsingDescriptors:sortDescriptors];
    
过滤不会对原来的数据产生影响,而是生成符合过滤条件的NSArray数据

    NSPredicate *apredicate=[NSPredicate predicateWithFormat:@"id>=%ld AND id<=%ld",3,5];
    
    NSArray *newArr=[self.dataArray filteredArrayUsingPredicate:apredicate];

下面是个例子可以运行看看

#import <Foundation/Foundation.h>

@interface TestBean : NSObject
@property(nonatomic,assign)int id;
@property(nonatomic,strong)NSString* data;
@end
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>

@property (strong, nonatomic) NSArray
*list;



@end


//
//  ViewController.m
//  First
//
//  Created by shanreal-iOS on 17/10/16.
//  Copyright © 2017年 shanreal.LongZhenHao. All rights reserved.
//

#import "ViewController.h"
#import "TestBean.h"
@interface ViewController ()

@property(nonatomic,strong)NSMutableArray* dataArray;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    _dataArray = [NSMutableArray array];
    
    TestBean* one = [[TestBean alloc]init];
    one.id = 1;
    one.data = @"one";
    [_dataArray addObject:one];
    
    one = [[TestBean alloc]init];
    one.id = 2;
    one.data = @"two";
    [_dataArray addObject:one];
    
    one = [[TestBean alloc]init];
    one.id = 22;
    one.data = @"two2";
    [_dataArray addObject:one];
    
    one = [[TestBean alloc]init];
    one.id = 3;
    one.data = @"three";
    [_dataArray addObject:one];
    
    one = [[TestBean alloc]init];
    one.id = 4;
    one.data = @"four";
    [_dataArray addObject:one];
    
    
    
    one = [[TestBean alloc]init];
    one.id = 44;
    one.data = @"four4";
    [_dataArray addObject:one];
    
    one = [[TestBean alloc]init];
    one.id = 5;
    one.data = @"five";
    [_dataArray addObject:one];
    
    one = [[TestBean alloc]init];
    one.id = 6;
    one.data = @"six";
    [_dataArray addObject:one];
    
    [self oneClick];
    [self twoClick];
    
}

-(void)oneClick{
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"data" ascending:YES];//其中,price为数组中的对象的属性,这个针对数组中存放对象比较更简洁方便
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:&sortDescriptor count:1];
    [self.dataArray sortUsingDescriptors:sortDescriptors];
    
    [self logArray:self.dataArray];
}

-(void)twoClick{
    NSPredicate *apredicate=[NSPredicate predicateWithFormat:@"id>=%ld AND id<=%ld",3,5];
    
    NSArray *newArr=[self.dataArray filteredArrayUsingPredicate:apredicate];
    [self logArray:newArr];
}

-(void)logArray:(NSArray*)array{
    NSLog(@"---------------------------------");
    for(TestBean* bean in array){
        NSLog(@"%d %@",bean.id,bean.data);
    }
}


@end




阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页