-1

以下是我的代码:

NSArray *myarr = [[NSArray alloc]initWithObjects:@"2",@"13",@"1",@"21",@"300",@"4", nil];
NSSortDescriptor *desc = [[NSSortDescriptor alloc]initWithKey:@"self" ascending:YES];
NSArray *rrrr = [myarr sortedArrayUsingDescriptors:[NSArray arrayWithObject:desc]];
NSLog(@"%@",rrrr);

以下是我的结果:

1,
13,
2,
21,
300,
4

虽然以下是我的预期结果:

1,
2,
4,
13,
21,
300
4

1 回答 1

0

您的对象是字符串,而不是数字。尝试这个:

NSArray *myarr = [[NSArray alloc]initWithObjects:@2,@13,@1,@21,@300,@4, nil];
NSSortDescriptor *desc = [[NSSortDescriptor alloc]initWithKey:@"self" ascending:YES];
NSArray *rrrr = [myarr sortedArrayUsingDescriptors:[NSArray arrayWithObject:desc]];
NSLog(@"%@",rrrr);

你得到的是字母排序而不是数字排序。看看您是否使用该代码得到不同的结果。

于 2013-02-13T02:15:45.353 回答