我可以使用NSStrings对XML馈送数组进行排序,就好像其中一些是数字一样吗?

时间:2011-10-18 12:32:33

标签: iphone objective-c

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

2 个答案:

答案 0 :(得分:3)

如果您只通过xml收到号码,那么您可以将它们保存为NSNumbers。

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

答案 1 :(得分:1)

这应该适用于您的情况(将selector作为参数添加为values localizedStandardCompare) -

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