2011-12-13 61 views
4

我有一个NSMutableArray,通过字典[从JSON请求]IOS排序阵列使用词典

我需要组织根据一个键在字典

字典中的数组填充

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

所以这个数组是由不同的字典组成的,具有上面的形式,而且我需要组织起来最多到最少WinRewardPoints

我已经看到了SO this answer,但不知道怎么还没有采用它为我的情况下,

非常感谢!

+0

这是答案的一部分,让你感到困惑?答案是正确的,非常简单。 –

回答

4
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); 
+0

:这给了我解决问题的提示。谢谢 –

4
// 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]; 
}];