使用DatePicker和NSDate崩溃

Evg*_*ban 4 iphone xcode cocoa-touch objective-c ios

当我试图在iPhone上启动我的应用程序时,我发生了神秘的崩溃(尽管它在Simulator上完全有效).我认为问题在于这两种方法..:

-(void)viewWillAppear:(BOOL)animated{
    [self getValueFromPicker];
}


-(void)getValueFromPicker{

    NSDate *now = [NSDate date];

    NSDate *birthDate = self.birthdayPicker.date;

    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit
                                               fromDate:now
                                                 toDate:birthDate
                                                options:0];

    NSLog(@"Difference in years %i/", components.year);

}
Run Code Online (Sandbox Code Playgroud)

应用程序因SIGABRT 错误而崩溃,并且我可以在控制台中看到一个文本:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: date'

请帮助我,我真的不知道我做错了什么,当我在控制台的模拟器上做同样的事情我可以看到从现在的日期和日期,用户选择的年数差异.

更新:我删除后[self defaultBirthdayPickerDate]; 在viewDidLoad部分,它开始工作.但是,现在选择器显示当前日期,选择生日日期不是很方便,现在我仍需要将其当前日期从现在改为过去.

iPa*_*tel 8

大多数情况下,当您应用nil日期时会产生这种类型的错误:检查self.birthdayPicker.date它的值是否是nil?并给予适当的条件,if你得到的nil价值UIDatePicker.