2011-01-19 97 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