NSDateFormatter, я делаю что-то не так или это ошибка?

Во время выполнения Segue ваш UIImageView не инициализируется, поэтому вы не можете назначить ему изображение, наилучшей практикой было бы передать UIImage и инициализировать ваш UIImageView в viewDidLoad.

, поэтому в вашем классе ListPage свойство типа UIImage изменит вашу prepareForSegue строку как

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "toBrowsePage" {


        var itemToAdd = segue.destinationViewController as! ListPage

        itemToAdd.image = browsingImage.image

        }

    }

в viewDidLoad или viewDidAppear вашего пункта назначения viewController вы сделаете что-то вроде этого

browsingImage.image = image
37
задан prince 28 May 2013 в 12:55
поделиться

5 ответов

Используя код Вы отправили и на средстве моделирования и на телефоне с 2,1 микропрограммными и 24-часовыми наборами времени к прочь, мне никогда не добавляли/PM к dateStr, когда я делаю:

NSLog(@"%@", dateStr);

Вы делаете что-либо еще с dateStr, который Вы не отправили здесь? Как Вы проверяете значение?

Продолжают

, Попытка, поворачивающаяся,/пополудни, устанавливая на тогда прочь. У меня не было проблемы также, пока я не сделал это. Я печатаю его тот же способ, которым Вы.

Хорошо, я вижу его, когда я делаю это также. Это, должна быть ошибка. Я рекомендую, чтобы Вы зарегистрировали отчет об ошибках и просто проверили на и отфильтровали нежелательные символы тем временем.

12
ответ дан logancautrell 28 May 2013 в 12:55
поделиться

Я думаю, что это решение.

NSDateFormatter *df =[[NSDateFormatter alloc] init];
        [df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

[df setLocale: usLocale];

[usLocale release];

 NSDate *documento_en_Linea =[[[NSDate alloc] init]autorelease];

documento_en_Linea=[df dateFromString:@"2010-07-16 21:40:33"];

[df release];

        NSLog(@"fdocumentoenLineaUTC:%@!",documento_en_Linea);


//ouput  
     fdocumentoenLineaUTC:2010-07-16 09:40:33 p.m. -0500!
4
ответ дан Maulik 28 May 2013 в 12:55
поделиться

Это также должно работать (хотя я вижу некоторые странные результаты).

-(NSString*)lowLevTime:(NSString*)stringFormat {
    char buffer[50];
    const char *format = [stringFormat UTF8String];
    time_t rawtime;
    struct tm * timeinfo;
    time(&rawtime);
    timeinfo = localtime(&rawtime);
    strftime(buffer, sizeof(buffer), format, timeinfo);
    return [NSString  stringWithCString:buffer encoding:NSASCIIStringEncoding];
}
0
ответ дан logancautrell 28 May 2013 в 12:55
поделиться

Вот объяснение ошибки iPhone SDK (также все еще присутствующей в 3.1 beta SDK)

Во-первых, небольшая предыстория пользовательского интерфейса iPhone. Когда iPhone пользователи меняют формат своего региона между, скажем, «США» и «Франция», пользовательская настройка «24-часовое время» автоматически переключается к режиму, наиболее распространенному в этом регионе. Во Франции это установит для 24-часового времени значение «ВКЛ.», а в США - «ВЫКЛ.». Затем пользователи могут вручную переопределить этот параметр, и это где начинаются проблемы.

Проблема возникает из-за того, что NSDateFormatter каким-то образом «застревает» в 12- или 24-часовой режим времени, выбранный пользователем вручную. Так что если Французский пользователь вручную выбирает 12-часовой режим, и приложение запросил NSDateFormatter для вывода времени в 24-часовом формате «Хммм», время будет отображаться в 12-часовом формате, например «13:00», как если бы приложение вместо этого запросило «хммм аа». Обратное произойдет, если пользователь из США вручную выберет 24-часовой режим: вывод времени в 12-часовом формате «ххмм аа» на самом деле получил бы вместо этого вы указываете время в 24-часовом формате, например, «17:00».

Более подробную информацию и возможные обходные пути можно найти в этом блоге .

14
ответ дан 27 November 2019 в 03:36
поделиться

Для тех, кто нашел этот вопрос и хочет использовать NSDateFormatter для разбора 24-часового времени и столкнулся с этой ошибкой, использование NSDateComponents для разбора дат и времени, которые имеют известный формат, обходит эту проблему:

NSString *dateStr = @"2010-07-05";
NSString *timeStr = @"13:30";

NSDateComponents *components = [[NSDateComponents alloc] init];
components.year = [[dateStr substringToIndex:4] intValue];
components.month = [[dateStr substringWithRange:NSMakeRange(5, 2)] intValue];
components.day = [[dateStr substringFromIndex:8] intValue];
components.hour = [[timeStr substringToIndex:2] intValue];
components.minute = [[timeStr substringFromIndex:3] intValue];

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

NSDate *date = [calendar dateFromComponents:components];

[components release];
[calendar release];
1
ответ дан 27 November 2019 в 03:36
поделиться