簡體   English   中英

iPhone - 使用2個鍵對包含NSDictionary的NSMutableArray進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM