我正在开发一个比较日期值的程序,如果新选择的日期小于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 result = [dateVal 比较:dateStart];
当我从日历视图中选择较小的日期值时。
我在开始时都将dateStart和dateEnd设置为属性,并为它们设置[[NSDate alloc] init]。请帮忙。
答案 0 :(得分:1)
问题在于这一行:
dateStart = dateVal;
但必须是这样的:
[self setdateStart:dateVal];
谢谢你,祝你有个愉快的一天。