Cod*_*Guy 21 sorting iphone nsmutablearray nsarray ios
有人可以告诉我排序NSMutableArray的代码吗?我有以下NSMutableArray:
NSMutableArray *arr = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)
具有诸如"2","4","5","1","9"等元素,它们都是NSString.
我想按降序对列表进行排序,以便最大值整数在列表中最高(索引0).
我尝试了以下方法:
[arr sortUsingSelector:@selector(compare:)];
Run Code Online (Sandbox Code Playgroud)
但它似乎没有正确地对我的价值进行排序.
有人能告诉我代码正确地做我想要完成的事情吗?谢谢!
HyL*_*ian 56
您应该使用此方法:
[arr sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
Run Code Online (Sandbox Code Playgroud)
在a NSArray或:
[arr sortUsingSelector:@selector(caseInsensitiveCompare:)];
Run Code Online (Sandbox Code Playgroud)
在"就地"排序 NSMutableArray
比较器应返回以下值之一:
NSOrderedAscendingNSOrderedDescendingNSOrderedSamethe*_*aws 19
为字符串编写自己的比较方法非常简单:
@implementation NSString(compare)
-(NSComparisonResult)compareNumberStrings:(NSString *)str {
NSNumber * me = [NSNumber numberWithInt:[self intValue]];
NSNumber * you = [NSNumber numberWithInt:[str intValue]];
return [you compare:me];
}
@end
Run Code Online (Sandbox Code Playgroud)
Eri*_*ric 18
如果数组的元素只是带有数字而没有字母的NSStrings(即"8","25","3"等),这里有一个干净简洁的方法,实际上有效:
NSArray *sortedArray = [unorderedArray sortedArrayUsingComparator:^(id a, id b) {
return [a compare:b options:NSNumericSearch];
}];
Run Code Online (Sandbox Code Playgroud)
完成!无需编写返回的整个方法NSComparisonResult,或者八行NSSortDescriptor...
恕我直言,这种数组排序的最简单方法是
[arr sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"self.intValue" ascending:YES]]]
Run Code Online (Sandbox Code Playgroud)
如果您的数组包含浮点值,只需将键更改为self.floatValue或self.doubleValue
| 归档时间: |
|
| 查看次数: |
25622 次 |
| 最近记录: |