我正在开发一个OS X桌面应用程序,它将跟踪赛车事件的时间。NSString到NSDate浮点值
飞行员之间的差异可以非常小,所以每圈所收集的数据有秒浮点值:
bestLap = @"00:01:39.5930000"
但我需要每个飞行员的时间进行比较和排序。我试图将其转换为NSDate对象,使用NSDateFormatter,我无法设法使其工作
是否有可能将这样的字符串转换为NSDate?如果是的话,如何可以比较和排序含有NSDates
由于
我正在开发一个OS X桌面应用程序,它将跟踪赛车事件的时间。NSString到NSDate浮点值
飞行员之间的差异可以非常小,所以每圈所收集的数据有秒浮点值:
bestLap = @"00:01:39.5930000"
但我需要每个飞行员的时间进行比较和排序。我试图将其转换为NSDate对象,使用NSDateFormatter,我无法设法使其工作
是否有可能将这样的字符串转换为NSDate?如果是的话,如何可以比较和排序含有NSDates
由于
一个NSDate用于表示一个日期,而不是一个时间间隔的阵列。
此外,如果目的只是对它们进行排序,则不需要将字符串转换为NSDate或NSTimeInterval,因为如果时间间隔比格式中的其他时间间隔短,它们已按字典顺序排序。
这意味着,拨打-sortUsingSelector:
就足够了。
[theMutableArrayOfLaps sortUsingSelector:@selector(compare:)];
正如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”格式,没有任何错误检查。通常你不应该在现实生活中这样做)