NSTime create a timeInterval

2019-06-11 03:36发布

问题:

I have the following code in my application in the method updateLabel2:

timeLeft = [[NSDate date] timeIntervalSinceDate:[[NSUserDefaults standardUserDefaults] objectForKey:@"lastDate"]];

[[self timer] setText:[NSString stringWithFormat:@"Time Remaining: %f", timeLeft]]; //Set the label text

Note that timer is a label.

and earlier, the following code is executed:

    [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"lastDate"];


self.repeatTimer = [NSTimer scheduledTimerWithTimeInterval:1
                                               target:self
                                             selector:@selector(updateLabel2) 
                                             userInfo:nil
                                              repeats:YES];

My problem is that timeLeft is being set to random integers which are definetly not what the timeIntervals should be, and are not within one second of each other either.

回答1:

Your format-string is wrong:
Because NSTimeInterval is a floating point type, you need to either

  • use the appropriate placeholder %f instead of %d or
  • cast timeLeft to an int while calling -[NSString stringWithFormat:].

Which — I think — is, what Justin referred to.

Aside

Considering what you're doing there:
Shouldn't that be "Time elapsed"?