2012-01-06 4 views
1

Имея очень странную проблему. После обработки файла я прочитал txt, который имеет три строки. Версия, из даты и времени, ToDatetime. Я прочитал эти строки и добавил объект в NSCoreData. Все работает нормально при работе в симуляторе, но как только я развертываю свой iPhone, NSDates возвращается как нуль.iOS NSDate и NSManagedObject

Вот вывод на консоль при запуске с iPhone

2012-01-05 23:58:25.478 FlightPath[10257:707] 7/28/2011 12:00:00 AM 
2012-01-05 23:58:27.911 FlightPath[10257:707] (null) 
2012-01-05 23:58:29.718 FlightPath[10257:707] (null) 

Вот вывод на консоль при запуске формы iPhone Sim

2012-01-06 00:07:07.900 FlightPath[1755:11903] 7/28/2011 12:00:00 AM 
2012-01-06 00:07:08.899 FlightPath[1755:11903] 7/28/2011 12:00:00 AM 
2012-01-06 00:07:11.686 FlightPath[1755:11903] 7/28/2011 12:00:00 AM 

Вот код ... Я добавил в TDate для тестирования цели. Я хотел убедиться, что мне не нужно добавлять __block в NSManagedObject.

NSString *mapInfoPath = [[mapData objectAtIndex:1] stringByAppendingPathComponent: @"Tiles/info.txt"]; 
     NSString *mapInfo = [[NSString alloc] initWithContentsOfFile:mapInfoPath encoding:NSUTF8StringEncoding error:nil]; 
     __block NSDate *tDate = nil; 
     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
     [dateFormatter setDateFormat:@"M/d/yyyy h:mm:ss a"]; 

     __block int lineCount = 0;     
     [mapInfo enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) { 
      switch (lineCount) { 
       case 1: 
        map.editionNumber = [NSNumber numberWithInt:[line intValue]]; 
        break; 
       case 2: 
        tDate = [dateFormatter dateFromString:line]; 
        map.fromDate = [dateFormatter dateFromString:line]; 
        NSLog(@"%@", line); 
        NSLog(@"%@", [dateFormatter stringFromDate:map.fromDate]); 
        NSLog(@"%@", [dateFormatter stringFromDate:tDate]); 
        break; 
       case 3:        
        map.toDate = [dateFormatter dateFromString:line]; 
        break; 
       default: 
        break; 
      } 

      lineCount += 1; 
     }]; 
     map.processed = [NSNumber numberWithBool:YES]; 

Любая помощь будет отличной .... застряла и не может понять, почему она работает на сим, а не на iPhone.

Спасибо!

ответ

1

Появляется это ошибка, когда телефон находится в режиме 24 часа. Прямой ответ был здесь: http://multinc.com/2009/09/27/iphone-sdk-time-bug-for-international-users/, который я нашел на этом посту: Why my NSDate Formatter can't convert correctly and returns null on device?

Поскольку я всегда знаю, что буду разбирать 12-часовой день, я просто использовал setLocale, и это сделало трюк.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setLocale: [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; 
[dateFormatter setDateFormat:@"M/d/yyyy h:mm:ss aa"]; 
Смежные вопросы