无法对整数数组进行排序?

App*_*ple 1 iphone objective-c

我想按升序对多个数字的整数数组进行排序.

这是我的数组:

keyArray:
(
   978,
   1077,
   1067,
   1076,
   1072,
   1082,
   1079,
   1075,
   1071,
   1081,
   1078,
   1080,
   1074
Run Code Online (Sandbox Code Playgroud)

)

这是我的代码:

NSSortDescriptor *sortOrder = [NSSortDescriptor sortDescriptorWithKey:@"self"  ascending: YES];

NSArray *sortedArray2 = [keyArray sortedArrayUsingComparator:^(id str1, id str2) {

    if ([str1 integerValue] < [str2 integerValue]) {
        return (NSComparisonResult)NSOrderedDescending;
    }

    if ([str1 integerValue] > [str2 integerValue]) {
        return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
}];

NSLog(@"%@",[keyArray sortedArrayUsingDescriptors: [NSArray arrayWithObject:sortOrder]]);
Run Code Online (Sandbox Code Playgroud)

问题是,这会像这样对数组进行排序

sortedArray: (

  1067,
  1071,
  1072,
  1074,
  1075,
  1076,
  1077,
  1078,
  1079,
  1080,
  1081,
  1082,
  978
)
Run Code Online (Sandbox Code Playgroud)

它将首先对四位数字进行排序,然后对三位数字进行排序.

All*_*ian 8

你可以轻松实现你想要的,试试这个:

NSArray * sortedArray2 = [keyArray sortedArrayUsingComparator:^(id str1, id str2){
    return [(NSString *)str1 compare:(NSString *)str2 options:NSNumericSearch];
}];
Run Code Online (Sandbox Code Playgroud)