我正在开发一个OS X桌面应用程序,它将跟踪赛车活动的时间。
飞行员之间的差异可能非常小,因此每圈的收集数据具有秒数的浮点值:
bestLap = @"00:01:39.5930000"
但我需要比较每个飞行员的时间并对其进行排序。我正在尝试将其转换为NSDate对象,使用NSDateFormatter并且我无法使其工作
是否可以将类似的字符串转换为NSDate?如果是这样,我如何比较和排序包含NSDates的数组
由于
答案 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”格式而没有任何错误检查。在现实生活中通常不应该这样做!)