我正在为我正在开发的应用编写一个缓存系统。它在Core Data中存储了一个密钥(NSString)和一个最后请求的时间戳(NSDate),我无法查看它是否已过期(它设置为在300秒后过期)。
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没有改变 - 没关系。但是这个区间产生了一个看似随机的数字:
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时所看到的那样,在应用程序的中间运行时 - 它仍然认为它不到300,即使它是1494482944。
有什么想法吗?感谢。
答案 0 :(得分:4)
记录间隔时,将其记录为整数(%d),但时间间隔为双精度(%f)。替换NSLog(...)中的那些实例,您应该看到正确的值。