我正在使用NSXMLParser来获取提要,并根据各种属性对结果数组进行排序。解析的结果是一堆NSStrings。一切都运行正常,当然除了一个数字大于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
我假设这是因为NSStrings按字母顺序排序,而且我将不得不转换为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];
答案 0 :(得分:3)
如果您只通过xml收到号码,那么您可以将它们保存为NSNumbers。
NSString还有属性intValue,如果可能的话,它将该字符串作为整数返回。
答案 1 :(得分:1)
这应该适用于您的情况(将selector作为参数添加为values localizedStandardCompare) -
NSSortDescriptor * rankDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"rankicon" ascending:NO selector:@selector(localizedStandardCompare:)] autorelease];