我能否用nsstring对xml馈送数组进行排序,就像其中一些是数字一样



我使用NSXMLParser来获取提要,并根据各种属性对结果数组进行排序。parse的结果是一系列nsstring。一切都很正常,当然除了一个数字大于10的字符串。数组的顺序如下:

9、8、7、6、5、4、3、2、1,12日,11日,10 0

显然我希望它是这样的:

12、11、10、9、8、7、6、5、4、3、2、1、0

我假设这是因为nsstring按"字母顺序"排序,我需要转换成NSNumber之类的?这是最好的办法吗,还是有更简单的办法?

我现在有:

if ([elementname isEqualToString:@"rankicon"])
{
    currentPlayer.rankicon = currentNodeContent;
}

然后:

NSSortDescriptor *rankDescriptor = 
    [[[NSSortDescriptor alloc]               
      initWithKey:@"rankicon" 
      ascending:NO]autorelease];
NSArray *sortDescriptors = 
    [NSArray arrayWithObjects:rankDescriptor, nil];
[players sortUsingDescriptors:sortDescriptors];

如果你只通过xml接收数字,那么你可以将它们保存为nsnumber。

NSString也有intValue属性,如果可能的话,它返回字符串作为整数。

这应该在你的情况下工作(添加选择器作为参数值localizedStandardCompare) -

NSSortDescriptor * rankDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"rankicon"  ascending:NO selector:@selector(localizedStandardCompare:)] autorelease]; 

相关内容

最新更新