数组的字典键值排序

NSUserDefaults * def = [NSUserDefaultsstandardUserDefaults];

   NSMutableArray * arr = [[defobjectForKey:@"shopArr"]mutableCopy];

    NSArray * sortDescriptors = [NSArrayarrayWithObject:[NSSortDescriptorsortDescriptorWithKey:@"proId"ascending:YES] ];

    [arrsortUsingDescriptors:sortDescriptors];



<1>描述:字符串对象都可以排序

// 创建描述对象就是对数组排序的,它可以把数组中元素的某个属性作为key 进行升序或者降序的排列,每一个NSSortDescriptor描述就是一个排序条件

// 描述排序其实就是可以按照条件去升降排序

// key:就是你要排序的对象

// ascending:是升序还是降序

//<1>创建数组NSMutableArray *ms = [[NSMutableArray alloc]initWithObjects:@"kkk", @“abg”,nil]; 

//<2>创建描述对象:如果说我们这个数组中存储是一个个字符串,那么我们这块的key值就应该写成nil或者@“self”,如果是对象则写成对象的属性即可

NSSortDescriptor *mm = [[NSSortDescriptor alloc]initWithKey:@"self" ascending:YES];

NSSortDescriptor *nn = [[NSSortDescriptor alloc]initWithKey:@"name" ascending:YES];

//<3>使用描述方法满足以上描述对象的条件对上面的数组进行排序

[ms sortUsingDescriptors:@[mm]];

NSLog(@"%@",ms);

<4>可变数组的描述方法是[数组名 sortUsingDescriptors:@“ 描述对象的名字 ”]

<5>不可变数组的描述方法是,首先得创建一个新的数组来承接NSArray *array = [数组名 sortedArrayUsingDescriptors:@“ 描述对象的名字 ”] 

<2>compare使用这个方法给数组排序

//<1>创建数组

NSArray *kkl = @[@“4”,@"3",@"5",@"1"];

//<2>数组调用compare排序方法,这个方法默认是升序的,[kkl sortedArrayUsingSelector:@selector(compare:)]; 

<3>我们也可以重写这个方法,按照自己的条件进行排序//按姓名进行对比:compare:方法是字符串拥有的方法 

自定义方法比较方法- (NSComparisonResult)compareByName: (Student *)other{return [self.name compare:other.name];//因为属性是个字符串,所以在这块可以用compare直接比较,然后返回比较结果就行了, 

}

//按年龄进行对比

  • (NSComparisonResult)compareByAge: (Student *)other{

    if (self.age > other.age) {//基本类型对比的话就是直接对比的

      return 1;

    }else if (self.age < other.age){

      return -1;

    }else{

      return 0;

    }

    }

枚举排序:


 // 模型排序

NSMutableArray *parts = [NSMutableArrayarray];

 [parts sortUsingComparator:^NSComparisonResult(HWTextPart *part1,HWTextPart *part2) {

        // NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending

        // 返回NSOrderedSame:两个一样大

        // NSOrderedAscending(升序):part2>part1

        // NSOrderedDescending(降序):part1>part2

        if (part1.range.location > part2.range.location) {

            // part1>part2

            // part1放后面, part2放前面

            returnNSOrderedDescending;

        }

        // part1<part2

        // part1放前面, part2放后面

        returnNSOrderedAscending;

    }];



 // 字典排序

 [parts sortUsingComparator:^NSComparisonResult(NSDictionary * obj1,NSDictionary * obj2) {

        if (obj1[@"obj"]> obj2[@"obj"]) {

            returnNSOrderedDescending;

        }

        returnNSOrderedAscending;

    }];

// - 数组的方法 让数组一会执行某个方法

    [ arr1 makeObjectsPerformSelector:SEL];


 // 字符串排序

 NSArray * arr = @[@"sadf", @"bdf", @"retertue", @"asdfxc", @"jkfa", @"pskfo"];

    NSArray * arr1 = [arr sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

    NSLog(@"%@",arr1);





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值