3

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

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

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

我的用户偏好方法在他们的类中如下所示:

+ (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];
}

提前致谢。

4

2 回答 2

1

从您的代码中,您永远不会将 datePicker 的日期设置为生日。试试这个:

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

datePicker.date = birthDate;

}

于 2009-06-09T04:36:42.323 回答
1

这里 objDatePicker 是 Datepicker 对象,

    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];
于 2013-03-22T09:01:27.110 回答