2010-09-03 72 views
0

我正在开发一个OS X桌面应用程序,它将跟踪赛车事件的时间。NSString到NSDate浮点值

飞行员之间的差异可以非常小,所以每圈所收集的数据有秒浮点值:

bestLap = @"00:01:39.5930000" 

但我需要每个飞行员的时间进行比较和排序。我试图将其转换为NSDate对象,使用NSDateFormatter,我无法设法使其工作

是否有可能将这样的字符串转换为NSDate?如果是的话,如何可以比较和排序含有NSDates

由于

回答

3

一个NSDate用于表示一个日期,而不是一个时间间隔的阵列。

此外,如果目的只是对它们进行排序,则不需要将字符串转换为NSDate或NSTimeInterval,因为如果时间间隔比格式中的其他时间间隔短,它们已按字典顺序排序。

这意味着,拨打-sortUsingSelector:就足够了。

[theMutableArrayOfLaps sortUsingSelector:@selector(compare:)]; 
1

正如KennyTM所说,如果您只需要订购,那么词典排序就足够了。如果你真的想获得比较&报告目的的数值,可以打破字符串成组件和转换为double是这样的:

NSArray* parts = [bestLap componentsSeparatedByString:@":"]; 
double bestLapInSeconds = [[parts objectAtIndex:0] doubleValue] * 3600 // hours 
          + [[parts objectAtIndex:1] doubleValue] * 60 // minutes 
          + [[parts objectAtIndex:2] doubleValue];  // seconds 

(请注意,这只是轻率地假定原始字符串符合“H:M:S”格式,没有任何错误检查。通常你不应该在现实生活中这样做)