2012-12-06 108 views
6

我存儲NSMutableDictionary數據存儲由Web服務接收到的數據。排序的NSDictionary通過對象的屬性存儲爲值

我想顯示字母順序的數據,但我們知道以自己的方式解釋存儲數據,所以我M代表的iOS 5和iOS 6的iOS 5使用不同的順序是好的,但在iOS 6中改變它的順序。

我存儲INT鍵和對象值。

對象包含ID,名稱和說明。

EX: 
    key value 
    1 - (12,bhgjksd,kijdh) 
    6 - (13,kjfd,ikjk) 
    2 - (14,ljiuhbdf,dsjhfj) 

如何按Object.Name屬性對Dictionary進行排序。 或根據Object.Name排序順序獲取密鑰。

我不想排序鍵我要作爲排序依據存儲在價值一部分對象Object.Name。

任何形式的幫助,歡迎..... 在此先感謝..

+0

你可以看看這個 http://stackoverflow.com/questions/8118932/how-can-i-sort-nsmutabledictionary-with-keys-值 –

+1

嗨Amrit感謝有空。但在這個問題上,他希望根據關鍵字進行排序,而我想根據價值進行排序。 – CRDave

回答

6

試試這個,

NSArray *sortedKeys = [dict keysSortedByValueUsingComparator: ^(id obj1, id obj2) { 

    return (NSComparisonResult)[obj1.name compare:obj2.name];; 
}]; 

您將獲得sortedKeys陣列中所有的鑰匙,在的順序排序object.name屬性。您可以使用這些鍵從字典中獲取值爲[dict valueForKey:[sortedKeys objectAtIndex:i]]。詳情請諮詢check apple documentation

+0

謝謝這解決了我的問題,我從keysSortedByValueUsingComparator喜歡它。首先我從這裏找到它http://stackoverflow.com/questions/11217421/sort-nsdictionary-keys-by-dictionary-value-into-an-nsarray?rq=1。謝謝你試試幫助我。 – CRDave

+0

這也幫助我比比的NSString http://getsetgames.com/2009/12/10/iphonedev-advent-tip-10-string-comparison-using-nsstring/ – CRDave

+0

我不知道,我只能接受一個答案所以我去選擇另一個答案。 – CRDave

3
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"Object.Name" ascending:YES]; 
[items sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]]; 

此外,

NSArray *ordered = [myDictionary keysSortedByValueUsingComparator:^NSComparisonResult(id obj1, id obj2){ 
    return [obj1.name compare:obj2.name]; 
}]; 
+0

謝謝嘗試幫助我。我解決我的問題通過keysSortedByValueUsingComparator – CRDave

+1

這也幫助我比比的NSString http://getsetgames.com/2009/12/10/iphonedev-advent-tip-10-string-comparison-using-nsstring/ – CRDave

+0

我沒有照抄照搬你,我只是用2種方式發佈答案。它到達OP,他想要的方式。即使你和我的答案有一些差異。我不在乎是否有人接受我的答案。即使是downvote也會對我很好;) –

相關問題