我有一个 NSDictionnary 数组,我想按一个 int 值(键名为“age”)对它们进行排序。 例如:
Dic1:年龄 = 30,性别 = 男性; Dic2 : 年龄 = 24, 性别 = 男;
数组:Dic1, Dic2;
现在有了比较方法,我想拥有:
数组:Dic2, Dic1;
我尝试了很多东西,但没有用。我使用 NSSortDescriptor 但它仅在 iOS 4.0 之后可用:(
你有解决办法吗? 谢谢!
编辑:
我在 NSDictionary 类别上写了一个比较方法:
- (NSComparisonResult)compareGood:(NSDictionary *)otherObject
{
return [[self objectForKey:@"age"] compare:[otherObject objectForKey:@"age"]];
}
但是我遇到了这个崩溃错误:由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[NSCFNumber compare:]: nil argument”
最佳答案
NSSortDescriptor 的文档说:
Available in iOS 2.0 and later.
同样适用于 NSMutableArray 方法 -sortUsingDescriptors:
。你应该能够做到这一点:
NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"age"
ascending:YES]
autorelease];
[myArray sortUsingDescriptors:[NSArray arrayWithObject:descriptor];
或者,如果 myArray 不可变,则对第二行执行此操作:
NSArray *sortedArray = [myArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]];
关于ios - iOS 上的 sortedArrayWithSelector 和 NSDictionnary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6584310/