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.
어떤 아이디어? 감사.
아, 어리석은 질문에 대해 유감스럽게 생각합니다. Ruby (및 Rails)에서 쓸 수있는 곳은 어디 까지나 : last_requested <5.minutes.ago –
글쎄, NSTimeInterval이 double인지 알아야하기 때문에 와 % d는 아마도 정수보다 두 배 더 의미가있을 것입니다. 나는 바보 같은 질문으로 간주합니다 :-) – Alfonso
참고 : Xcode의 새로운 LLVM 컴파일러에는 printf 형식의 문자열 검사와 같은 기본 제공 검사가 있습니다 (NSLog() 또는 stringWithFormat :) – Alfonso