私は実際に解決策を見つけることができました。カスタム ロジックを使用してブロックを作成し、NSComparisonResult
各文字列の先頭の数字部分を読み取り、それらを数値的に比較します。
NSComparisonResult (^sortByNumber)(id, id) = ^(id obj1, id obj2)
{
//Convert items to strings
NSString *s1 = (NSString *)obj1;
NSString *s2 = (NSString *)obj2;
//Find the period and grab the number
NSUInteger periodLoc1 = [s1 rangeOfString:@"."].location;
NSString *number1 = [s1 substringWithRange:NSMakeRange(0, periodLoc1)];
NSUInteger periodLoc2 = [s2 rangeOfString:@"."].location;
NSString *number2 = [s2 substringWithRange:NSMakeRange(0, periodLoc2)];
//Compare the numeric values of the numbers
return [number1 compare:number2 options:NSNumericSearch];
};
次に、次のように呼び出して配列を並べ替えます。
NSArray *array = [[[self myDictionary] allValues] sortedArrayUsingComparator:sortByNumber];