2014-08-28 61 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