OC 基本的便利排序方法

来源:互联网 发布:知柏地黄丸成分 编辑:程序博客网 时间:2024/05/16 04:37

NSEnumerator   数组便利


NSMutableArray *array = [NSMutableArray arrayWithObjects:@"aaa",@"bbb",@"ccc",@"ddd", nil];


//获取数组的正序枚举器

    NSEnumerator *enu = [array objectEnumerator];

    id value = nil;

    //如果value不为nil 则继续 如果枚举的当前对象为nil 则表示数组结束 value值为nil 跳出while循环

    while (value = [enu nextObject]) {

        NSLog(@"%@", value);

    }


//逆向枚举

NSEnumerator *reverseEnu = [array reverseObjectEnumerator];

    while (value = [reverseEnu nextObject]) {

        NSLog(@"%@", value);

    }




//☀️   NSEnumerator   字典便利

    

    NSDictionary *dictionary = @{@"key1":@"value1", @"key2":@"value2", @"key3":@"value3"};

    NSEnumerator *enumerator = [dictionary objectEnumerator]; //获取枚举器对象

        id value = nil; //存储字典中的value

        while ((value = [enumerator nextObject])) {

                    NSLog(@"%@", value);

        }


//forin 便利字典


NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"张",@"name",@"男",@"sex", nil];

//    

//        for (NSString *str in dic) {

//            NSLog(@"%@ %@", str, dic[str]);

//        }



//    ☀️ NSSortDescriptor 不可变数组排序 便利

可变数组 sortUsingDescriptors

不可变数组排序方法, sortedArrayUsingDescriptors

    

    NSArray *array1 = [NSArray arrayWithObjects:@"2",@"5",@"3",@"1", nil];

    NSSortDescriptor *acending = [[NSSortDescriptor alloc]initWithKey:nil ascending:YES];

    NSArray *array2 = [array1 sortedArrayUsingDescriptors:@[acending]];

    for (NSNumber *a in array2) {

        NSLog(@"%@", a);

    }



☀️NSSortDescriptor  复杂对象 person 按要求排序 便利

    

    Person *person1 = [[Person alloc]initWithName:@"B" age:20];

    Person *person2 = [[Person alloc]initWithName:@"C" age:30];

    Person *person3 = [[Person alloc]initWithName:@"A" age:40];

    

    NSMutableArray *array = [NSMutableArray arrayWithObjects:person1, person2, person3, nil];


    //按照名字升序(名字为英文)

    NSSortDescriptor *name = [[NSSortDescriptor alloc]initWithKey:@"name" ascending:YES];//   NO  为降序

    

    NSArray *arr = [array sortedArrayUsingDescriptors:@[name]];

    

    for (Person *p in arr) {

        NSLog(@"%@ %ld", p.name, p.age);

    }





//☀️   usingSelector   数组排序   可变数组用sortUsingSelector

    //默认升序  //compare 可以比较的对象有 NSString NSNumber,不能对复杂对象进行比较。

    NSArray *nameArray = @[@"ddd", @"ccc", @"aaa", @"bbb"];

    NSArray *sorted1 = [nameArray sortedArrayUsingSelector:@selector(compare:)];

    NSLog(@"%@", sorted1);




//☀️ 复杂对象排序  自己重写compare方法

    Person *person1 = [Person personWithName:@"Angle" age:25];

    Person *person2 = [Person personWithName:@"Bill" age:24];

    Person *person3 = [Person personWithName:@"Cimi" age:23];

    Person *person4 = [Person personWithName:@"Doom" age:22];

    

    NSArray *personArray = @[person1, person2, person3, person4];

    //名字升序

    NSArray *sorted1 =  [personArray sortedArrayUsingSelector:@selector(compareName:)];

    

    for (Person *person in sorted1) {

        [person print];

    }


.m


- (NSComparisonResult)compareName:(Person *)anotherPerson

{

    return [self.name compare:anotherPerson.name];

//    return -[self.name compare:anotherPerson.name]; // 前面加 -号 降序


}

0 0
原创粉丝点击