可能重复:
如何对 NSArray 进行自然排序?
我有一个看起来像这样的数组:4.value、8.value、1.value、3.value、5.value 等,有无限的对象。
有没有办法将此数组从 1 排序到最后一个数字?所以:
1.价值,2.价值,3.价值......
谢谢!
可能重复:
如何对 NSArray 进行自然排序?
我有一个看起来像这样的数组:4.value、8.value、1.value、3.value、5.value 等,有无限的对象。
有没有办法将此数组从 1 排序到最后一个数字?所以:
1.价值,2.价值,3.价值......
谢谢!
我不清楚数组中对象的类型是什么,因此您需要更改以下代码以适合您的类型,但这通常是您对数组进行排序的方式:
NSMutableArray* array = [[NSMutableArray alloc] init];
[array addObject:@"3.value"];
[array addObject:@"1.value"];
[array addObject:@"4.value"];
[array addObject:@"2.value"];
NSArray* sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) {
// Write whatever comparison code is appropriate for your objects here
// The following will only work for simple strings
return [obj1 caseInsensitiveCompare:obj2];
}];
NSLog(@"%@", sortedArray);
编辑: 如果您使用字符串并且字符串总是被格式化,以便它们采用以下形式:“Integer.String”,您应该使用以下代码对数组进行排序:
NSArray* sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) {
NSInteger left = [obj1 integerValue];
NSInteger right = [obj2 integerValue];
if (left > right) {
return NSOrderedDescending;
}
if (left < right) {
return NSOrderedAscending;
}
return NSOrderedSame;
}];
如果您只是比较字符串,它们将按第一个字符排序,因此 @"123.value" 将排在 "9.value" 之前
NSArray *sortedarray = [[YourArray allObjects]
sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
NSLog(@"%@",sortedarray);