Arrays 如何根据键对数组进行排序';s值多少?

Arrays 如何根据键对数组进行排序';s值多少?,arrays,dictionary,nssortdescriptor,Arrays,Dictionary,Nssortdescriptor,我使用的数组名为inputArray,如下所示 ( { "2016-01-21" = { amount = 3978; date = "2016-01-20 18:30:00 +0000"; "date-day" = 21; "date-month" = Jan; "date-year" = 16; units = 780; }; }, { "2

我使用的数组名为
inputArray
,如下所示

(
    {
    "2016-01-21" =         {
        amount = 3978;
        date = "2016-01-20 18:30:00 +0000";
        "date-day" = 21;
        "date-month" = Jan;
        "date-year" = 16;
        units = 780;
    };
},
    {
    "2015-11-20" =         {
        amount = 7938;
        date = "2015-11-19 18:30:00 +0000";
        "date-day" = 20;
        "date-month" = Nov;
        "date-year" = 15;
        units = 1380;
    };
},
    {
    "2015-10-03" =         {
        amount = 13423;
        date = "2015-10-02 18:30:00 +0000";
        "date-day" = 03;
        "date-month" = Oct;
        "date-year" = 15;
        units = 2211;
    };
},
    {
    "2015-09-26" =         {
        amount = 4110;
        date = "2015-09-25 18:30:00 +0000";
        "date-day" = 26;
        "date-month" = Sep;
        "date-year" = 15;
        units = 800;
    };
},
    {
    "2015-08-03" =         {
        amount = 18300;
        date = "2015-08-02 18:30:00 +0000";
        "date-day" = 03;
        "date-month" = Aug;
        "date-year" = 15;
        units = 2950;
    };
},

)
从这个数组中,我必须获得金额最高的
日期月
。在本例中,索引5包含
金额
18300
,以及该索引的月份
Aug

如何做到这一点


我还需要将该值存储到
NSString
。我还需要根据金额值对该数组进行排序,并将其存储到新数组中。

假设您需要的值是字典,并且您有一个字典数组,例如:

NSDictionary *dict1 = @{
                            @"date" : @"2016-01-21",
                            @"values" : @{
                                    @"amount" : @3978,
                                    @"date" : @"2016-01-20 18:30:00 +0000",
                                    @"date-day" : @21,
                                    @"date-month" : @"Jan",
                                    @"date-year" : @16,
                                    @"units" : @780
                                    }

                            };

    NSDictionary *dict2 = @{
                            @"date" : @"2015-11-20",
                            @"values" : @{
                                    @"amount" : @7938,
                                    @"date" : @"2015-11-19 18:30:00 +0000",
                                    @"date-day" : @20,
                                    @"date-month" : @"Nov",
                                    @"date-year" : @15,
                                    @"units" : @1380
                                    }

                            };

    NSDictionary *dict3 = @{
                            @"date" : @"2015-10-03",
                            @"values" : @{
                                    @"amount" : @13423,
                                    @"date" : @"2015-10-02 18:30:00 +0000",
                                    @"date-day" : @3,
                                    @"date-month" : @"Oct",
                                    @"date-year" : @15,
                                    @"units" : @2211
                                    }

                            };

    NSDictionary *dict4 = @{
                            @"date" : @"2015-09-26",
                            @"values" : @{
                                    @"amount" : @4110,
                                    @"date" : @"2015-09-25 18:30:00 +0000",
                                    @"date-day" : @26,
                                    @"date-month" : @"Sep",
                                    @"date-year" : @15,
                                    @"units" : @800
                                    }

                            };

    NSDictionary *dict5 = @{
                            @"date" : @"2015-08-03",
                            @"values" : @{
                                    @"amount" : @18300,
                                    @"date" : @"2015-08-02 18:30:00 +0000",
                                    @"date-day" : @3,
                                    @"date-month" : @"Aug",
                                    @"date-year" : @15,
                                    @"units" : @2950
                                    }

                            };

    NSArray *array = @[dict1, dict2, dict3, dict4, dict5];
您可以使用比较器对阵列进行排序:

NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *obj1, NSDictionary *obj2) {
    NSNumber *amount1 = obj1[@"values"][@"amount"];
    NSNumber *amount2 = obj2[@"values"][@"amount"];

    // Sort in descending order so highest number is first
    return [amount2 compare:amount1];
}];
由于数组是按数量降序排序的,因此可以从排序后的数组中获取第一个字典,并从中获取所需的任何值

NSString *dateWithMax = sortedArray.firstObject[@"values"][@"date-month"];
NSLog(@"%@", dateWithMax);

我不知道为什么这里有额外的日期键,如果没有这个键就很容易了。