【问题标题】:ios sort array with dictionariesios使用字典排序数组
【发布时间】:2012-01-18 23:16:25
【问题描述】:

我有一个 NSMutablearray,由字典 [来自 JSON 请求] 填充

我需要根据字典中的键来组织数组

字典

IdReward = 198;
Name = "Online R d";
RewardImageUrl = "/FileStorimage=1206";
WinRewardPoints = 250;

所以数组是由不同的字典组成的,上面的形式,我需要从最大到最小组织WinRewardPoints

我在 SO 中看到了 this answer,但还不明白如何在我的情况下采用它,

非常感谢!

【问题讨论】:

  • 该答案的哪一部分让您感到困惑?这个答案是正确的,非常简单。

标签: ios sorting dictionary nsmutablearray


【解决方案1】:
IdReward = 198;
Name = "Online R d";
RewardImageUrl = "/FileStorimage=1206";
WinRewardPoints = 250;


NSMutableArray *arr = [[NSMutableArray alloc]init];

for (int i=0; i<[dict count]; i++) {
    [arr addObject:[dict valueForKey:@"WinRewardPoints"]];
}

NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:nil ascending:YES] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
arr = [[arr sortedArrayUsingDescriptors:sortDescriptors] copy];


NSMutableArray *final_arr = [[NSMutableArray alloc]init];
for(NSString* str in arr)<p>
{
    for(int i=0 ; i<[dict count]; i++)
    {
            <t>if ([str isEqualToString:[[dict valueForKey:@"WinRewardPoints"]objectAtIndex:i]]) 
                            {

                [final_arr addObject:[dict objectAtIndex:i]];
            }
    }

}

NSLog(@"%@",final_arr);

【讨论】:

    【解决方案2】:
    // create a NSString constant for the key we want to sort by, so we don't have to create more NSString instances while sorting
    static NSString* const keyToSortBy = @"WinRewardPoints";
    
    // sort an array that contains dictionaries, each of which contains a NSNumber for the key defined "WinRewardPoints"
    [yourArray sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        NSNumber* n1 = [obj1 objectForKey:keyToSortBy];
        NSNumber* n2 = [obj2 objectForKey:keyToSortBy];
        return [n1 compare:n2];
    }];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 2020-08-02
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      相关资源
      最近更新 更多