joe*_*irk 6 sorting iphone nsdictionary nsmutablearray
嗨所有,
我有一个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
Run Code Online (Sandbox Code Playgroud)
排序后,数组中的结果应为:
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
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?经历了一些sortUsingComparator方法,无法想出办法.
也许是这样的?
[array sortUsingDescriptors:
[NSArray arrayWithObjects:
[[[NSSortDescriptor alloc]
initWithKey:@"loginDate"
ascending:NO]
autorelease],
[[[NSSortDescriptor alloc]
initWithKey:@"username"
ascending:YES]
autorelease],
nil]];
Run Code Online (Sandbox Code Playgroud)
如果您为iOS 4或更高版本构建,您甚至可以:
[array sortUsingDescriptors:
[NSArray arrayWithObjects:
[NSSortDescriptor sortDescriptorWithKey:@"loginDate" ascending:NO],
[NSSortDescriptor sortDescriptorWithKey:@"username" ascending:YES],
nil]];
Run Code Online (Sandbox Code Playgroud)
这可以使用该compare:方法比较属性键值,即返回的值valueForKey:.在NSDictionary它的情况下,它或多或少只是调用objectForKey:来获取值.有一些特殊符号,例如使用"@"作为键名前缀,有关更多详细信息,请参阅差值valueforKey objectForKey.
| 归档时间: |
|
| 查看次数: |
1603 次 |
| 最近记录: |