objective-c - sortedArrayUsingComparator int

标签 objective-c xcode

我有一个字典数组,它 sortedArrayUsingComparator 根据键对它们进行排序;

listPerc = [listItem sortedArrayUsingComparator: ^(id a, id b) {
    NSString *first = [a objectForKey:@"perc"];
    NSString *second = [b objectForKey:@"perc"];
    return [first compare:second];

问题是这个键是一个数字,顺序是这样的,例如:1,10,15,17,2,23,等等。 它不计算数字的大小。 我该怎么办?

最佳答案

能不能这样返回比较结果,

listPerc = [listItem sortedArrayUsingComparator: ^(id a, id b) {
    int first = [[a objectForKey:@"perc"] intValue];
    int second = [[b objectForKey:@"perc"] intValue];

    if ( first < second ) {
        return (NSComparisonResult)NSOrderedAscending;
    } else if ( first > second ) {
        return (NSComparisonResult)NSOrderedDescending;
    } else {
        return (NSComparisonResult)NSOrderedSame;
    }
}

关于objective-c - sortedArrayUsingComparator int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6227702/

相关文章:

Xcode 9 beta 2 Storyboard充满错误

Xcode:如何清理所有项目,而不仅仅是 1 个项目?

ios - iOS Objective-c insertObject:对象atIndex:index

iphone - Objective-C/iPhone 内存管理静态变量

ios - 没有混合层的圆形 UIView(带 cornerRadius)

ios - 警告 'fileAttributesAtPath :traverseLink is deprecated: first deprecated in ios 2. 0

ios - 如何以0.5间隔设置uislider值

iPhone Emoji 十进制值表示

objective-c - 收到 "Enumeration values ' x'、 'y' 和 'z' not returned in switch"消息,而实际上正在处理这些枚举。这是怎么回事?

swift - SpriteKit : Updating several enemies position to follow the player