[英]iPhone - Sorting of NSMutableArray containing NSDictionary with 2 keys
嗨所有,
我有一個NSMutableArray包含各種NSDictionary。 在每個NSDictionary中,我有兩個鍵值對,例如:username和loginDate。
我需要根據loginDate降序和用戶名升序對此NSMutableArray中的所有NSDictionary進行排序。
只是為了更詳細地說明:
NSMutableArray (index 0): NSDictionary -> username:"user1", loginDate:20 Dec 2011
NSMutableArray (index 1): NSDictionary -> username:"user2", loginDate:15 Dec 2011
NSMutableArray (index 2): NSDictionary -> username:"user3", loginDate:28 Dec 2011
NSMutableArray (index 3): NSDictionary -> username:"user4", loginDate:28 Dec 2011
排序后,數組中的結果應為:
NSMutableArray (index 0): NSDictionary -> username:"user3", loginDate:28 Dec 2011
NSMutableArray (index 1): NSDictionary -> username:"user4", loginDate:28 Dec 2011
NSMutableArray (index 2): NSDictionary -> username:"user1", loginDate:20 Dec 2011
NSMutableArray (index 3): NSDictionary -> username:"user2", loginDate:15 Dec 2011
我怎樣才能做到這一點? 經歷了一些sortUsingComparator方法,無法想出辦法。
也許是這樣的?
[array sortUsingDescriptors:
[NSArray arrayWithObjects:
[[[NSSortDescriptor alloc]
initWithKey:@"loginDate"
ascending:NO]
autorelease],
[[[NSSortDescriptor alloc]
initWithKey:@"username"
ascending:YES]
autorelease],
nil]];
如果您為iOS 4或更高版本構建,您甚至可以:
[array sortUsingDescriptors:
[NSArray arrayWithObjects:
[NSSortDescriptor sortDescriptorWithKey:@"loginDate" ascending:NO],
[NSSortDescriptor sortDescriptorWithKey:@"username" ascending:YES],
nil]];
這可以使用compare:
方法來比較屬性鍵值,即valueForKey:
返回的值。 在NSDictionary
的情況下,它或多或少只會調用objectForKey:
來獲取值。 有一些特殊符號,例如使用“@”作為鍵名前綴,有關更多詳細信息,請參閱差值valueforKey objectForKey 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.