4

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

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

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!

1
  • Which part of that answer confused you? That answer is correct and very simple. Commented Dec 13, 2011 at 1:17

2 Answers 2

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);
Sign up to request clarification or add additional context in comments.

Comments

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.