2009-06-09 16 views
3

Ich habe eine App, wo ich für die Benutzer Geburtstag mit einem UIDatePicker fragen und speichern Sie es dann in Standardbenutzereinstellungen. Wenn die App wieder geöffnet wird, bekomme ich das Datum erneut und möchte dann den UIDatePicker auf dieses Datum setzen, aber es stürzt ab und akzeptiert das Datum nicht. Es wird im Format "8. Juni 2009" gespeichert.UIDatePicker und NSDate

Wie muss ich dies tun? Dies ist die Art, wie ich es jetzt bin versucht:

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

wie Meine Benutzer pref Methoden in ihrer Klasse aussehen:

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

Vielen Dank im Voraus.

Antwort

1

In Ihrem Code legen Sie für das Datum von datePicker nie das Geburtsdatum fest. Versuchen Sie folgendes:

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

datePicker.date = birthDate; 

}

+0

Dank! Ich habe versucht, [datePicker setDate: birthDate] zu verwenden, um das Datum festzulegen. Was macht diese Methode, wenn sie das Datum nicht auf das setzt, was Sie wollen? – Xcoder

+0

[datePicker setDate: birthDate] ist dasselbe wie datePicker.date = birthDate. Der Hauptunterschied besteht darin, dass das Datum von datePicker nicht festgelegt wird, wenn in Ihrem Code "birthDate" nicht gleich null ist. –

+0

Ja, ich weiß. Ich habe es auskommentiert, weil [datePicker setDate: birthDate] es abstürzte. Aus irgendeinem Grund hat datePicker.date dies jedoch nicht getan. Sehr eigenartig. – Xcoder

1

Hier objDatePicker Datepicker-Objekt ist,

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];