日期选择器代码问题

时间:2011-08-03 02:38:07

标签: iphone datepicker uipickerview

我最近在我的医疗应用程序中添加了一项功能,可以根据输入的日期计算患者的年龄。如果年龄为零,则日期选择器将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'

我很感激任何帮助,以了解为什么这种崩溃只发生在旧设备上,以及如何解决问题。提前谢谢。

1 个答案:

答案 0 :(得分:3)

根据tr35-10标准,您的日期格式应为MMMM/dd/yyyy

您还应该cache formatters for efficiency