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.floatValue
或self.doubleValue
最简单的方法就是像这样做一个比较方法
NSArray *sortedStrings = [stringsArray sortedArrayUsingComparator:^NSComparisonResult(NSString *firstString, NSString *secondString) { return [[firstString lowercaseString] compare:[secondString lowercaseString]]; }];