sortingNSString的NSArray

有人可以告诉我sorting一个NSMutableArray的代码? 我有以下NSMutableArray:

NSMutableArray *arr = [[NSMutableArray alloc] init]; 

与“2”,“4”,“5”,“1”,“9”等元素都是NSString。

我想按降序对列表进行sorting,以使列表中最大的整数值最高(索引0)。

我尝试了以下内容:

 [arr sortUsingSelector:@selector(compare:)]; 

但它似乎并没有正确分类我的价值观。

有人可以让我看看我正在努力完成的任务吗? 谢谢!

编写自己的string比较方法非常简单:

 @implementation NSString(compare) -(NSComparisonResult)compareNumberStrings:(NSString *)str { NSNumber * me = [NSNumber numberWithInt:[self intValue]]; NSNumber * you = [NSNumber numberWithInt:[str intValue]]; return [you compare:me]; } @end 

你应该使用这个方法:

 [arr sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; 

NSArray或:

 [arr sortUsingSelector:@selector(caseInsensitiveCompare:)]; 

在“inplace”sortingNSMutableArray

比较器应该返回下列值之一:

  • NSOrderedAscending
  • NSOrderedDescending
  • NSOrderedSame

如果数组的元素只是带有数字和无字母的NSString(即“8”,“25”,“3”等),这里是一个干净而简短的实际工作方式:

 NSArray *sortedArray = [unorderedArray sortedArrayUsingComparator:^(id a, id b) { return [a compare:b options:NSNumericSearch]; }]; 

完成! 无需编写一个返回NSComparisonResult的整个方法,或者八行NSSortDescriptor

恕我直言,sorting这种数组最简单的方法是

 [arr sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"self.intValue" ascending:YES]]] 

如果您的数组包含浮点值,只需将key更改为self.floatValueself.doubleValue

最简单的方法就是像这样做一个比较方法

 NSArray *sortedStrings = [stringsArray sortedArrayUsingComparator:^NSComparisonResult(NSString *firstString, NSString *secondString) { return [[firstString lowercaseString] compare:[secondString lowercaseString]]; }];