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);