iOS NSDate и NSManagedObject - PullRequest
       3

iOS NSDate и NSManagedObject

1 голос
/ 06 января 2012

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

Вот вывод консоли при запуске с 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 Ответ

1 голос
/ 07 января 2012

Появляется, что это ошибка, когда телефон находится в 24-часовом режиме.Прямой ответ был здесь: http://multinc.com/2009/09/27/iphone-sdk-time-bug-for-international-users/, который я нашел в этом посте: Почему мой NSDate Formatter не может правильно конвертировать и возвращает ноль на устройстве?

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

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale: [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
[dateFormatter setDateFormat:@"M/d/yyyy h:mm:ss aa"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...