我正在制作一个关卡游戏,我正在寻找一种比较两次的方法。 第一次是玩家需要第二次完成关卡的时间是我选择的时间。如果第一次低于第二次,如果高于第二次,则得不到明星。我已经在NSDates中存储了2次,如下面的代码中所示。我使用NSComparisonResult来比较结果。我的问题是NSComparisonResult Result1 = 4294967295而不是NSOrderedDescending或类似的东西。如何比较Objective-C中的时间?
NSDate *currentDate = [NSDate date];
NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:self.startDate];
NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];
NSComparisonResult result1;
NSComparisonResult result2;
NSComparisonResult result3;
// Create a date formatter
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"mm:ss.SSS"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
//has three possible values: NSOrderedSame,NSOrderedDescending, NSOrderedAscending
NSDate *level1ThreeStarRequirement = [dateFormatter dateFromString:@"00:01.500"];
NSDate *level1TwoStarRequirement = [dateFormatter dateFromString:@"00:02.500"];
NSDate *level1OneStarRequirement = [dateFormatter dateFromString:@"00:02.500"];
result1 = [timerDate compare:level1ThreeStarRequirement]; // comparing two dates
result2 = [timerDate compare:level1TwoStarRequirement];
result3 = [timerDate compare:level1OneStarRequirement];
if (result1 == NSOrderedAscending){
self.star1.image = [UIImage imageNamed:@"star1.png"];
self.star2.image = [UIImage imageNamed:@"star2.png"];
self.star3.image = [UIImage imageNamed:@"star3.png"];
}
if (result2 == NSOrderedAscending){
self.star1.image = [UIImage imageNamed:@"star1.png"];
self.star2.image = [UIImage imageNamed:@"star2.png"];
self.star3.image = [UIImage imageNamed:@"noStar.png"];
}
if (result3 == NSOrderedDescending){
self.star1.image = [UIImage imageNamed:@"star1.png"];
self.star2.image = [UIImage imageNamed:@"noStar.png"];
self.star3.image = [UIImage imageNamed:@"noStar.png"];
}
感谢马蒂斯
打印所有日期的值以开始调试问题。 – Wain
Gaah !!在一级接受一颗星和两颗星的时间是相同的!岂有此理! – Groot
你好菲利普,那是因为接收两颗星的时间必须低于2.500,得到1星的时间必须高于2.500。所以球员总是至少有一个明星。 – MatisDS