2011-02-08 4 views
0

iPhone의 시계 앱에 타이머 탭과 같은 countdowtimer 응용 프로그램을 쓰고 있습니다. 지금 나는 날짜, '지금'과 '미래의 날짜'와 비교하는 데 어려움을 겪고 있습니다. 모든 변수가 합성되고 비 원자이며 유지됩니다. 지금이 코드가 있습니다.nstimer 선택기 내 날짜 비교

- (IBAction)startTimer:(id)sender { 
    NSLog(@"startTimer"); 
    pickerView.hidden = YES; 
    labelView.hidden = NO; 
    now = [[NSDate alloc] init]; 
    futureDate = [[NSDate alloc] initWithTimeInterval:picker.countDownDuration sinceDate:now]; 
    NSLog(@"Dates.\nNow = (%@) \nfutureDate (%@)", now, futureDate); 
    timerLabelUpdater = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(labelUpdater) userInfo:nil repeats:YES]; 
} 

- (void)labelUpdater { 
    if ([now timeIntervalSinceDate:futureDate] < 0.0) { 
     NSLog(@"YES\nDates.\nNow = (%@) \nfutureDate (%@)", now, futureDate); 
    } else { 
     NSLog(@"NO\nNow = (%@) \nfutureDate (%@)", now, futureDate); 
    } 
} 

디버거 정보 : 2011-02-08 16 : 46 : 02.449 애플리케이션 46 : 22504 : 207] 2011-02-08 16가 startTimer 앱 02.451 [22,504 : 207] 날짜. Now = (2011-02-08 18:46:02 +0000)
futureDate (2011-02-08 18:47:02 +0000) 2011-02-08 16 : 46 : 03.451 앱 [22504 : 207 ] 예

그리고 내게 "영원히"계속 머물러 있습니다. 하지만 변수 시간이 표시되면 내 시계 시간과 비교하여 향후 + 2 시간입니다. 이거 버그 야?

답변

0

죄송합니다. 잘못된 날짜를 테스트하는 중입니다. 변수를 지금 비교하고 미래의 시간 간격을 영원히 동일하게 유지합니다. 테스트에서 [[NSDate alloc] init]에 대한 now 변수를 바꿨습니다. 지금 코드가 작동합니다.

if ([[[NSDate alloc]init] timeIntervalSinceDate:futureDate] < 0.0) { 
    NSLog(@"YES\nDates.\nNow = (%@) \nfutureDate (%@)", now, futureDate); 
} else { 
    NSLog(@"NO\nNow = (%@) \nfutureDate (%@)", now, futureDate); 
} 

바보 같은 질문 죄송합니다.