我最近在我的医疗应用程序中添加了一项功能,可以根据输入的日期计算患者的年龄。如果年龄为零,则日期选择器将1950年1月1日显示为输入日期的默认开始日期。该代码在iPhone和iPad硬件上的iOS 4.0+上运行良好。但是,在提交应用程序更新之前进行测试时,我发现日期选择器在第一代iPod上崩溃,我将继续测试iOS 3.1.3。我缩小了以下代码作为罪魁祸首,它设置了日期选择器的默认日期:
if (age == 0) {
NSDateFormatter *myFormatter = [[NSDateFormatter alloc] init];
[myFormatter setDateFormat:@"M/d/yy"];
NSDate *initialDate = [myFormatter dateFromString:@"January/01/1950"];
[picker setDate:initialDate animated:YES];
}
来自iPod的日志在崩溃后显示以下两行:
<Warning>: *** Assertion failure in -[UIDatePickerView _updateBitsForDate:andReload:animateIfNeeded:], /SourceCache/UIKit/UIKit-984.38/UIDatePicker.m:908
和
<Error>: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: date'
我很感激任何帮助,以了解为什么这种崩溃只发生在旧设备上,以及如何解决问题。提前谢谢。