localizedStandardCompare:排序缺少尾随零的时间时的排序错误

时间:2012-02-14 05:22:47

标签: iphone objective-c ios cocoa-touch sorting

我正在排序这样的数组:

00:26.39    
00:23.49
00:26.9

但是,当我尝试使用localizedStandardCompare:对升序进行排序时,结果会如下:

00:23.49
00:26.9
00:26.39    

我怀疑错误与00:26.9时间缺少尾随零有关,但我需要正确排序,即使数据输入如图所示。

我可以使用不同的搜索选择器来正确处理吗?或者除了滚动我自己的分拣机之外的其他一些简单的解决方案?

感谢。

1 个答案:

答案 0 :(得分:0)

你应该将每个值更改为浮点数而不是字符串以避免这种情况尝试这个:

NSArray *arrOne = [[NSArray alloc] initWithObjects:[NSString stringWithFormat:@"%f",[@"26.39" floatValue]],[NSString stringWithFormat:@"%f",[@"26.49" floatValue]],[NSString stringWithFormat:@"%f",[@"26.9" floatValue]],nil];

    NSLog(@"00:26.39 < 00:26.49  %d",[[arrOne objectAtIndex:0] localizedStandardCompare:[arrOne objectAtIndex:1]]);

    NSLog(@"00:26.49 > 00:26.39 %d",[[arrOne objectAtIndex:1]  localizedStandardCompare:[arrOne objectAtIndex:0]]);

    NSLog(@"00:26.49 < 00:26.9 %d",[[arrOne objectAtIndex:1]  localizedStandardCompare:[arrOne objectAtIndex:2]]);

    NSLog(@"00:26.49 == 00:26.49 %d",[[arrOne objectAtIndex:1]  localizedStandardCompare:[arrOne objectAtIndex:1]]);