【发布时间】:2011-02-28 15:38:48
【问题描述】:
我正在开发一个程序,该程序比较日期值,如果新选择的日期小于 dateStart,则设置开始日期,如果新选择的日期大于 dateStart,则设置 dateEnd。
当我选择更大的值(设置 dateEnd 时)时代码运行良好,但当我尝试设置 dateStart 时程序崩溃。这是我的代码:
- (void)setDate:(NSDate *)dateVal
{
NSComparisonResult result = [dateVal compare:dateStart];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd.MM.yyyy 00:00:00"];
switch (result)
{
case NSOrderedAscending:
{
dateStart = dateVal;
[dateFormatter setDateFormat:@"dd.MM.yyyy 00:00:00"];
[lblDateStart setText:[dateFormatter stringFromDate:dateStart]];
} break;
case NSOrderedDescending:{
dateEnd = dateVal;
[dateFormatter setDateFormat:@"dd.MM.yyyy 23:59:59"];
[lblDateEnd setText:[dateFormatter stringFromDate:dateEnd]];
} break;
case NSOrderedSame: NSLog(@"%@ is the same as %@", dateStart, dateVal); break;
default: NSLog(@"erorr dates %@, %@", dateStart, dateVal); break;
}
}
代码在
处给出EXC_BAD_ACCESS错误NSComparisonResult 结果 = [dateVal 比较:日期开始];
当我从日历视图中选择一个较小的日期值时。
我在开始时都将 dateStart 和 dateEnd 设置为属性,并为它们设置了 [[NSDate alloc] init]。请帮忙。
【问题讨论】:
-
两件事。您是否尝试过使用 Zombies 调试代码,dateVal 是否可能是指向您之前发布的内容的指针?
-
Nicholas,我通过将 dateStart = dateVal 更改为 [self setdateStart:dateVal] 解决了这个问题,我意识到这不是分配日期的正确方法。感谢您的帮助。
标签: iphone objective-c nsdate exc-bad-access