Написать собственную функцию сортировки:
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]
Я сделал много предположений, но этот код работает с вашим образцом массива и аналогичными входными значениями.
Основное предположение состоит в том, что вы хотели этот конкретный порядок только для строк, которые начинаются с числового значения. Если это не так, вы можете использовать этот код, чтобы адаптировать его к желаемому алгоритму.