编写自定义排序函数:
NSInteger customSortingFunctionReversedAndNumericFirst(NSString *string1, NSString *string2, void *context) {
NSCharacterSet *decimalCharacterSet;
BOOL firstStringStartsWithNumeric,
secondStringStartsWithNumeric;
decimalCharacterSet = [NSCharacterSet decimalDigitCharacterSet];
firstStringStartsWithNumeric = [decimalCharacterSet characterIsMember:[string1 characterAtIndex:0]];
secondStringStartsWithNumeric = [decimalCharacterSet characterIsMember:[string2 characterAtIndex:0]];
if (firstStringStartsWithNumeric != secondStringStartsWithNumeric) {
return firstStringStartsWithNumeric ? NSOrderedAscending : NSOrderedDescending;
}
return [string2 compare:string1 options:NSNumericSearch];
}
,并使用它像这样:
NSArray *sortedDirectoryContent = [directoryContent sortedArrayUsingFunction:customSortingFunctionReversedAndNumericFirst context:NULL]
我做了很多的假设,但是这段代码对你的样本数组有效找到类似的输入值。
主要假设是您只需要以数值开头的字符串的这种特定顺序。如果不是这种情况,您可以使用此代码将其调整为您想要的算法。
好的解决方案+1。 – erastusnjuki 2010-02-18 12:06:51