2014-08-28 59 views
0

我有一个包含此数据字典:如何修改这个NSMutableArray?

(
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"}),但不知道我可以做这样的事情,不知道如何单独调用它。请我需要你的帮助:“(

+0

我不明白你现在的数据。它以'('开始,这意味着一个数组,并且有一个“contact”键和一个字典的值,但随后会有更多字典。请更好地描述您的数据。 – trojanfoe 2014-08-28 09:31:36

+0

对不起,也许我犯了一些错误因为我输入它不复制和粘贴,但都是NSDictionary – Edward 2014-08-28 09:34:42

+0

那么顶级-1的第二和第三个元素的键在哪里evel字典? – trojanfoe 2014-08-28 09:44:40

回答

1

您可以轻松地包含字典值排序的数组,见下文

//Get the contact array. 

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

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

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

我希望它能帮助

+0

如果我这样做,它只对名称进行排序,但我还需要初始化索引@iphonic – Edward 2014-08-28 09:49:23

+0

@Edward是否要对已排序的数据进行索引,或者只是索引或索引,然后对索引数据进行排序?首先索引 – iphonic 2014-08-28 10:43:23

+0

然后对数据进行排序。我想做一些像[this](http://www.appcoda.com/ios-programming-index-list-uitableview/) – Edward 2014-08-29 03:19:42