当用户点击按钮时,它将获得今天的日期/时间。开始日期和结束日期返回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];
}
答案 0 :(得分:0)
我的猜测是你没有使用initWithCoder
方法进行初始化,并调用initWithFrame
方法。
- (id)initWithCoder:(NSCoder *)aDecoder
是您正在使用的,并在使用xib或故事板时被调用。
方法:
- (id)initWithFrame:(CGRect )frame
是以编程方式初始化视图时调用的内容。尝试实现init代码是一个单独的方法,并从initWithCoder和initWithFrame调用它。 这样,您将从两种调用中获得相同的行为。