iPhone-包含NSDictionary和2个键的NSMutableArray排序
大家好 我有一个NSMutableArray,其中包含各种NSDictionary。在每个NSDictionary中,我有两个键值对,例如:username和loginDate 我需要根据loginDate降序和username升序对NSMutableArray中的所有NSDictionary进行排序 我只想更详细地说明一下:iPhone-包含NSDictionary和2个键的NSMutableArray排序,iphone,sorting,nsmutablearray,nsdictionary,Iphone,Sorting,Nsmutablearray,Nsdictionary,大家好 我有一个NSMutableArray,其中包含各种NSDictionary。在每个NSDictionary中,我有两个键值对,例如:username和loginDate 我需要根据loginDate降序和username升序对NSMutableArray中的所有NSDictionary进行排序 我只想更详细地说明一下: NSMutableArray (index 0): NSDictionary -> username:"user1", loginDate:20 Dec 2011
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:
即可获得值。有一些特殊的标记,如在键名前加“@”,请参阅以了解更多详细信息。loginDate是字符串还是NSDate?感谢您的建议,我们一定会尝试并再次反馈。)这将使用每个键的compare:
选择器进行排序。如果愿意,还可以为每个排序描述符指定另一个选择器或使用自定义比较器。