Iphone UIDatePicker和NSDate

Iphone UIDatePicker和NSDate,iphone,cocoa-touch,uidatepicker,Iphone,Cocoa Touch,Uidatepicker,我有一个应用程序,我用UIDatePicker请求用户的生日,然后将其存储在标准用户默认值中。当应用程序再次打开时,我再次获取日期,然后想将UIDatePicker设置为该日期,但它正在崩溃,并且不接受该日期。它以“2009年6月8日”的格式存储 我需要怎么做?这就是我现在尝试的方式: - (void)viewWillAppear:(BOOL)animated { birthDate = [Preferences getBirthDate]; if (birthDate == n

我有一个应用程序,我用UIDatePicker请求用户的生日,然后将其存储在标准用户默认值中。当应用程序再次打开时,我再次获取日期,然后想将UIDatePicker设置为该日期,但它正在崩溃,并且不接受该日期。它以“2009年6月8日”的格式存储

我需要怎么做?这就是我现在尝试的方式:

- (void)viewWillAppear:(BOOL)animated {
    birthDate = [Preferences getBirthDate];
    if (birthDate == nil) {
        [datePicker setDate:[NSDate date] animated:NO];
    }       
}
我的user pref方法在其类中类似于:

+ (NSDate *)getBirthDate {
    // Geting via user defaults....
    if ([[NSUserDefaults standardUserDefaults] objectForKey:@"DOB"])
        return [[NSUserDefaults standardUserDefaults] objectForKey:@"DOB"];
    else {
        return nil;
    }
}

+ (BOOL)setBirthDate:(NSDate *)bDate {
    //Setting via user defaults
    [[NSUserDefaults standardUserDefaults] setObject:bDate forKey:@"DOB"];
    return [[NSUserDefaults standardUserDefaults] synchronize];
}

提前感谢。

根据您的代码,您从未将日期选择器的日期设置为生日。试试这个:

- (void)viewWillAppear:(BOOL)animated {
NSDate *birthDate = [Preferences getBirthDate];
if (birthDate == nil) {
    birthDate = [NSDate date];
}

datePicker.date = birthDate;

}

这里objDatePicker是日期选择器对象

    NSDateFormatter *formate = [[NSDateFormatter alloc] init];  
    [formate setDateFormat:@"dd-MM-yyyy  HH:mm:ss"];
    NSTimeZone *zone=[NSTimeZone defaultTimeZone];
    [formate setTimeZone:zone];
    NSDate *date = [formate dateFromString:timeTextField.text];  
    NSLog(@"Output :%@",date);
    [objDatePicker setDate:date];

谢谢我试图使用[datePicker setDate:birthDate]来设置日期。如果该方法没有将日期设置为您想要的日期,该方法会做什么?[datePicker setDate:birthDate]与datePicker.date=birthDate相同。主要区别在于,如果代码中的生日不等于零,则不会设置日期选择器的日期。是的,我知道。我把它注释掉了,因为[datePicker setDate:birthDate]正在破坏它。但是,由于某些原因,datePicker.date没有。很奇怪。