如何修改此NSMutableArray?

时间:2014-08-28 09:22:06

标签: ios objective-c nsmutablearray nsdictionary

我有一个包含这些数据的字典:

    (
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"}
    )

从那个NSDictionary,我只获取名称并按字母顺序排序。像这样:

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

这是我使用的代码:

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

然后,我想问的是。我需要创建一个照片数组,但根据名称按字母顺序排序。我的意思是这样的:

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

我也听说使用(B={name="Bat", photo="draggle.jpg"})会更有效,但我不知道如何制作这样的东西并且不知道如何单独调用它。我需要你的帮助:"(

1 个答案:

答案 0 :(得分:1)

您可以轻松地对包含字典值的数组进行排序,请参阅下面的

//Get the contact array.

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

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

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

我希望它有所帮助。