ios sort array with dictionaries

I have an NSMutablearray, populated by dictionaries [from a JSON request]

i need to organize the array depending to a key in the dictionaries

  • Sort an array with special characters - iPhone
  • How can I sort an array of strings alphabetically when the strings contains åäö?
  • Sort array of objects by two properties
  • Sorting with sortedArrayUsingDescriptors and Key Paths
  • How can one sort an NSMutableArray of NSMutableArrays containing NSStrings?
  • Objective-C: Sort array using arguments
  • the dictionary

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

    so the array is composed by different dictionaries with the above form, and I need to organize by maximum to minimum WinRewardPoints

    I have seen this answer in SO, but dont understand yet how to adopt it for my case,

    thanks a lot!

    2 Solutions Collect From Internet About “ios sort array with dictionaries”

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