2011-01-19 90 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 – 2011-01-19 11:52:09