NSDate一直没有回头

时间:2014-07-07 14:24:38

标签: ios objective-c nsdate

当用户点击按钮时,它将获得今天的日期/时间。开始日期和结束日期返回nil

我有这些实例变量:

@property (strong) NSDate *startingDate;
@property (strong) NSDate *endingDate;
@property (strong) NSDateFormatter *dateFormatter;

在我的init方法中:

    startingDate = [NSDate date];
    endingDate = [startingDate dateByAddingTimeInterval:600];

现在我的更新方法:

-(void)updateCountdown {

dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"mm:ss"]; //format date for minutes and seconds

NSCalendar *calendar = [NSCalendar currentCalendar];
NSUInteger unitFlags = NSMinuteCalendarUnit|NSSecondCalendarUnit;
NSDateComponents *dateComponants = [calendar components:unitFlags fromDate:startingDate toDate:endingDate options:0];

NSInteger minutes = [dateComponants minute];
NSInteger seconds = [dateComponants second];

NSString *countdownText = [NSString stringWithFormat:@" %d Minute %d Seconds", minutes, seconds];
timeLabel.text = countdownText;

NSLog (@"Startdate is %@ and Enddate is %@.", startingDate, endingDate);
NSLog(countdownText);

[self performSelector:@selector(updateCountdown) withObject:nil afterDelay:1];
}

我现在的问题是startDate和endDate都返回nil?

编辑:感谢所有回答的人,我的初始没有被调用,

我不得不补充道:

- (id)initWithCoder:(NSCoder *)aDecoder {

self = [super initWithCoder:aDecoder];

if (self) {
    startingDate = [NSDate date];
    endingDate = [startingDate dateByAddingTimeInterval:600];
}

1 个答案:

答案 0 :(得分:0)

我的猜测是你没有使用initWithCoder方法进行初始化,并调用initWithFrame方法。

- (id)initWithCoder:(NSCoder *)aDecoder

是您正在使用的,并在使用xib或故事板时被调用。

方法:

- (id)initWithFrame:(CGRect )frame

是以编程方式初始化视图时调用的内容。尝试实现init代码是一个单独的方法,并从initWithCoder和initWithFrame调用它。 这样,您将从两种调用中获得相同的行为。