具有浮点值的NSString到NSDate

时间:2010-09-03 20:37:45

标签: objective-c cocoa

我正在开发一个OS X桌面应用程序,它将跟踪赛车活动的时间。

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

bestLap = @"00:01:39.5930000"

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

是否可以将类似的字符串转换为NSDate?如果是这样,我如何比较和排序包含NSDates的数组

由于

2 个答案:

答案 0 :(得分:3)

NSDate用于表示日期,而不是时间间隔。

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

这意味着,调用-sortUsingSelector:就足够了。

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

答案 1 :(得分: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”格式而没有任何错误检查。在现实生活中通常不应该这样做!)