【问题标题】:Objective C NSDictionary: How can I sort my NSDictionary keys based on the key's valueObjective C NSDictionary:如何根据键的值对我的 NSDictionary 键进行排序
【发布时间】:2017-03-27 00:23:07
【问题描述】:

我有一个等于以下值的 NSDictonary。

    A =     {
        order = 3;
    };
    B =     {
        order = 1;
    };
    C =     {
        order = 2;
    };

我需要根据订单号从小到大对键 A、B 和 C 进行排序。在此示例中,键应显示为以下 B、C 和 A。我该如何实现?

【问题讨论】:

    标签: ios objective-c sorting dictionary nsdictionary


    【解决方案1】:

    NSMutableDictionary 的键顺序(在您的情况下为 A、B、C)由系统决定。你无法控制它。

    但是您可以使用 NSMutableArray(不是 NSArray,因为它是不可变的,即无法修改)来实现您的目标。数组中的每个元素将是一个单独的 NSDictionary,其中包含 2 个键值对——一个用于键,一个用于顺序,只是为了让事情更简单。

    这是您需要的代码:

    NSMutableArray *arrayOfDictionaries = [@[
                                             @{ @"key" : @"A", @"order" : @3 },
                                             @{ @"key" : @"B", @"order" : @1 },
                                             @{ @"key" : @"C", @"order" : @2 },
                                             ] mutableCopy];
    
    [arrayOfDictionaries sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
    
        NSNumber *number1 = obj1[@"order"];
        NSNumber *number2 = obj2[@"order"];
    
        return [number1 compare:number2];
    }];
    
    NSLog(@"array = %@", arrayOfDictionaries);
    

    这些是结果,修改后的数组的样子:

    array = (
            {
            key = B;
            order = 1;
        },
            {
            key = C;
            order = 2;
        },
            {
            key = A;
            order = 3;
        }
    )
    

    【讨论】:

      猜你喜欢
      • 2011-04-04
      • 1970-01-01
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-22
      相关资源
      最近更新 更多