我有一个如下所示的数组: 4.value,8.value,1.value,3.value,5.value等,具有无限制的对象。
有没有办法将这个数组从1到最后一个数字排序?所以:
1.value,2.value,3.value .....
谢谢!
答案 0 :(得分: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”之前出现
答案 1 :(得分:1)
NSArray *sortedarray = [[YourArray allObjects]
sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
NSLog(@"%@",sortedarray);