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

Iphone 无法对整数数组进行排序?,iphone,objective-c,Iphone,Objective C,我想用多个数字按升序对整数数组进行排序 这是我的阵列: keyArray: ( 978, 1077, 1067, 1076, 1072, 1082, 1079, 1075, 1071, 1081, 1078, 1080, 1074 ) 这是我的密码: NSSortDescriptor *sortOrder = [NSSortDescriptor sortDescriptorWithKey:@"self" ascen

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

这是我的阵列:

keyArray:
(
   978,
   1077,
   1067,
   1076,
   1072,
   1082,
   1079,
   1075,
   1071,
   1081,
   1078,
   1080,
   1074
)

这是我的密码:

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]]);
它将首先对四位数进行排序,然后对三位数进行排序

NSInteger firstNumSort(id str1, id str2, void *context) {
int num1 = [str1 integerValue];
int num2 = [str2 integerValue];

if (num1 < num2)
    return NSOrderedAscending;
else if (num1 > num2)
    return NSOrderedDescending;

return NSOrderedSame;
}

希望,这将帮助你


希望,这将帮助你…

你可以很容易地实现你想要的,试试这个:

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

你可以很容易地实现你想要的,试试以下方法:

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

Darray2的顺序怎么了?您正在记录按字符串值排序的keyArray,而SorterDarray2应按整数值正确排序…?SorterDarray2的顺序有什么问题?您正在记录按字符串值排序的keyArray,而SortedArray 2应按整数值正确排序。。。?
NSArray * sortedArray2 = [keyArray sortedArrayUsingComparator:^(id str1, id str2){
    return [(NSString *)str1 compare:(NSString *)str2 options:NSNumericSearch];
}];