Edward
Edward

Reputation: 107

How to Modify this NSMutableArray?

I have a dictionary which contain this data:

    (
contact={name="Lion",id="1",photo="simba.png",address="elm street"},
    {name="Cat",id="2",photo="halleberry.png",address="attic"},
    {name="Bat",id="3",photo="dracule.jpg",address="long way home baby"}
    )

From that NSDictionary, i grab only the name and sorted it alphabetically. Like this:

(B={"Bat"}, C={"Cat"}, L={"Lion"})

This is the code i used:

NSMutableDictionary* sortedDict = [NSMutableDictionary dictionary];
 for (NSDictionary* animal in dataDict[@"user"]){
    NSString* name = animal[@"name"];
    if (![name length])
       continue;
     NSRange range = [name rangeOfComposedCharacterSequenceAtIndex:0];
     NSString* key = [[name substringWithRange:range] uppercaseString];
     NSMutableArray* list = sortedDict[key];
     if (!list){
        list = [NSMutableArray array];
        [sortedDict setObject:list forKey:key];
     }
     [list addObject:name];

Then, what i want to ask is. What i need to create an array of photos but sorted alphabetically based on the name. I mean something like this:

(B="dracule.jpg", C="halleberry.png"...etc)

I also heard that this will be more effective to use (B={name="Bat", photo="draggle.jpg"}) but don't know how i can make something like this and don't know how to call it separately. Please i need your help :"(

Upvotes: 0

Views: 68

Answers (1)

iphonic
iphonic

Reputation: 12719

You can easily sort the array which contains dictionaries values, see below

//Get the contact array.

NSArray *contacts=[dic objectForKey:@"contact"];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];

NSArray *sortedArray = [contacts sortedArrayUsingDescriptors:@[sortDescriptor]];

I hope it helps.

Upvotes: 1

Related Questions