2011-01-19 3 views
1

저는 작업중인 앱의 캐싱 시스템을 작성하고 있습니다. 코어 데이터에 키 (NSString)와 마지막으로 요청한 타임 스탬프 (NSDate)를 저장하고 만료되었는지 여부를 확인하는 데 문제가 있습니다 (300 초 후에 만료되도록 설정 됨).임의 값을 반환하는 NSTimeInterval

NSTimeInterval interval = [lastRequested timeIntervalSinceNow]; 
NSLog(@"Interval: %d", interval); 
// reload every 5 minutes 
if (interval > 300) { 
    NSLog(@"Last Requested: %d (older than 5 minutes)", interval); 
    return YES; 
} else { 
    NSLog(@"Last Requested: %d (within 5 minutes)", interval); 
    return NO; 
} 

lastRequested가 변경되지 않았 음을 확인했습니다. 괜찮습니다. 당신이 볼 수있는 응용 프로그램의 중간 실행에 값보다 큰 300 여부를 검사 할 때, 이상하게

2011-01-19 11:31:03.770 App[2998:207] Interval: -830996480 
2011-01-19 11:31:03.770 App[2998:207] Last Requested: -830996480 (within 5 minutes) 
2011-01-19 11:30:57.634 App[2994:207] Interval: 1494482944 
2011-01-19 11:30:57.634 App[2994:207] Last Requested: 1494482944 (within 5 minutes) 
2011-01-19 11:30:51.219 App[2991:207] Interval: -1951399936 
2011-01-19 11:30:51.219 App[2991:207] Last Requested: -1951399936 (within 5 minutes) 

그리고 - 여전히 비록 미만 300의 생각을 :하지만 간격은 겉으로는 난수를 생성 그것의 1494482944.

어떤 아이디어? 감사.

답변

4

간격을 기록 할 때 정수 (% d)로 기록하지만 시간 간격은 두 배 (% f)입니다. NSLog (...)에서 해당 인스턴스를 바꾸면 올바른 값이 표시됩니다.

+0

아, 어리석은 질문에 대해 유감스럽게 생각합니다. Ruby (및 Rails)에서 쓸 수있는 곳은 어디 까지나 : last_requested <5.minutes.ago –

+0

글쎄, NSTimeInterval이 double인지 알아야하기 때문에 와 % d는 아마도 정수보다 두 배 더 의미가있을 것입니다. 나는 바보 같은 질문으로 간주합니다 :-) – Alfonso

+0

참고 : Xcode의 새로운 LLVM 컴파일러에는 printf 형식의 문자열 검사와 같은 기본 제공 검사가 있습니다 (NSLog() 또는 stringWithFormat :) – Alfonso

관련 문제