2010-07-07 7 views
1

Я сохраняю дату, которая была преобразована в строку на plist, когда приложение выходит. Когда viewDidLoad запущен, я пытаюсь прочитать строку и преобразовать ее обратно в дату. Строка сохраняется в plist и читается правильно, но не будет возвращаться к дате. Я использую стандартный формат, заданный командой даты NSDate. Время1 всегда равно нулю.NSDate dateFromString возвращает null

Результат выглядит следующим образом:

time1string = 2010-07-07 13:47:12 -0500 
time1 = (null) 

код выглядит следующим образом:

- (void)applicationWillTerminate:(NSNotification *)notification { 
NSMutableArray *array = [[NSMutableArray alloc] init]; 

[array addObject: [NSString stringWithFormat:@"%@", time1]]; 

[array writeToFile:[self dataFilePath] atomically:YES]; 
[array release]; 

NSLog(@"APP Terminating, Persisting Data"); 

}

- (Недействительными) viewDidLoad {

NSLog(@"View did load"); 
NSString *filePath = [self dataFilePath]; 
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { 
    NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath]; 

    NSString *time1string = [array objectAtIndex:1]; 
    NSLog(@"time1string = %@",time1string); 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss Z"]; 
    time1 = [dateFormat dateFromString:time1string]; 
    NSLog(@"time1 = %@",time1); 
    [dateFormat release]; 
    [array release]; 

} 
UIApplication *app = [UIApplication sharedApplication]; 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(applicationWillTerminate:) 
              name:UIApplicationWillTerminateNotification 
              object:app]; 
[super viewDidLoad]; 

}

+0

Можете ли вы показать свою декларацию на время1? – falconcreek

+0

Из часто задаваемых вопросов > Когда вы определили, какой ответ наиболее полезен для вас, отметьте его как принятый ответ, нажав на рамку с надписью слева от ответа. Это позволяет другим людям знать, что вы получили хороший ответ на свой вопрос. Это полезно, потому что это показывает другим людям, что вы получаете ценность от сообщества. (Если вы этого не сделаете, люди часто будут вежливо просить вас вернуться и принять ответы на многие ваши вопросы!)> – falconcreek

ответ

8

Похоже, что он не разбирается, потому что вы используете неправильный формат даты. Вместо этого попробуйте использовать @"yyyy-MM-dd HH:mm:ss Z". Формат hh требует час в диапазоне 1-12, тогда как HH использует 0-23.

См. Locale Data Markup Language для получения полной справки по всем шаблонам, которые можно использовать здесь (через Data Formatters reference).

+0

Этот ответ кажется законным. Я пробовал другие ответы, которые указывали на настройку локали, и все, но никто из них не работал. И это работает как шарм. Ссылки действительно помогли. – tyegah123

Смежные вопросы