Objective c 如何按NSSortDiscriptor对NSArray排序?

Objective c 如何按NSSortDiscriptor对NSArray排序?,objective-c,Objective C,我是iPhone开发的新手。我需要你帮我整理行李 在这段代码中,我为MyData赋值。这是一个NSArray变量 NSMutableArray *MyArray=[NSMutableArray array]; [MyArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:314564454],@"Population", @"Mumbai",@"Name", [NSNumber num

我是iPhone开发的新手。我需要你帮我整理行李

在这段代码中,我为MyData赋值。这是一个NSArray变量

NSMutableArray *MyArray=[NSMutableArray array];

[MyArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:314564454],@"Population", @"Mumbai",@"Name", [NSNumber numberWithInt:415452],@"Area",nil]];

[MyArray addObject:[NSDictionary dictionaryWithObjectsAndKeys[NSNumber numberWithInt:454154412],@"Population", @"Chennai",@"Name", [NSNumber numberWithInt:324544],@"Area",nil]];

[MyArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:874544541],@"Population", @"Kolkatta",@"Name", [NSNumber numberWithInt:554445],@"Area",nil]];

[MyArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:412541245],@"Population", @"Delhi",@"Name", [NSNumber numberWithInt:345475],@"Area",nil]];

self.MyData = [NSArray arrayWithArray:MyArray];
现在我需要三个人口信息最多的城市

所以我写了下面的代码

NSSortDescriptor *sorter = [[[NSSortDescriptor alloc] initWithKey:@"Population" ascending:NO] autorelease]; 
NSArray *sorted = [self.MyData sortedArrayUsingDescriptors: 
    [NSArray arrayWithObject:sorter]];   

NSRange range = NSMakeRange(0,3); 
return [sorted subarrayWithRange:range];
但它不起作用。 如果替换以下代码,同样的代码也可以工作

NSSortDescriptor *sorter = [[[NSSortDescriptor alloc] initWithKey:@"Population" ascending:NO] autorelease]; 

这很有效。。 因为名称是字符串。 请帮助我如何用数值对数组进行排序


提前感谢您。

快速运行您的代码会得到以下输出,这对我来说似乎是正确的:

2010-07-29 16:32:59.774 test[93035:207] (
    {
    Area = 554445;
    Name = Kolkatta;
    Population = 874544541;
},
    {
    Area = 324544;
    Name = Chennai;
    Population = 454154412;
},
    {
    Area = 345475;
    Name = Delhi;
    Population = 412541245;
}
)
我刚刚将您的报税表替换为:
NSLog(@“%@,[sorted subraywithrange:range])


干杯…

快速运行您的代码会得到以下输出,这对我来说似乎是正确的:

2010-07-29 16:32:59.774 test[93035:207] (
    {
    Area = 554445;
    Name = Kolkatta;
    Population = 874544541;
},
    {
    Area = 324544;
    Name = Chennai;
    Population = 454154412;
},
    {
    Area = 345475;
    Name = Delhi;
    Population = 412541245;
}
)
我刚刚将您的报税表替换为:
NSLog(@“%@,[sorted subraywithrange:range])

干杯