我使用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];