2011-02-09 7 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) { 
    ... 
} 

Une raison pour laquelle la condition ne sera pas vraie?Vérifiez si NSTimeInterval est égal à 0

Merci.

Répondre

6

Depuis NSTimeInterval est seulement un double, vous pourriez avoir une erreur d'arrondi à virgule flottante. Essayez d'utiliser quelque chose comme

if (abs(interval) < EPS) { 

EPS est une constante assez petite. Ou, si vous voulez connaître les secondes et non les millisecondes, vous pouvez tronquer ce double en int.

Mais à en juger par votre code, je pense que vous pourriez vouloir vérifier si a déjà expiré, pas qu'il expire à ce moment précis. La probabilité de la dernière est très petite. Cela devrait faire l'affaire.

if (interval < 0) { 
Questions connexes