2011-02-09 15 views
1
//Gets the time right now 
NSDate *now = [NSDate date]; 

//Stores the difference in seconds between when the test was started and now. 
NSTimeInterval interval = [self.expires timeIntervalSinceDate:now]; 

if (interval == 0) { 
    ... 
} 

条件が成立しない理由は何ですか?NSTimeIntervalが0であるかどうかを確認します。

ありがとうございました。

答えて

6

NSTimeIntervaldoubleなので、浮動小数点丸めエラーが発生する可能性があります。何かを試してみてください

if (abs(interval) < EPS) { 

ここで、EPSは十分に小さい定数です。

ミリ秒ではなく秒を知りたい場合は、その倍精度浮動小数点型をintに切り捨てることができます。

あなたのコードから判断すると、タイムラインにが既に期限切れになっているかどうかをチェックしたいと思うかもしれません。この時点で期限切れになるのではなく、です。後者の確率は非常に小さい。これはトリックを行う必要があります。

if (interval < 0) { 
関連する問題