Как быстро перевести объект NSString в NSDate? - PullRequest
0 голосов
/ 26 сентября 2011

Я пытаюсь получить объекты NSDate из NSString, которые я получаю из sqlite, но есть проблема со временем.Я каждый раз принимаю 130 мс.И это невыносимо, потому что у меня есть две сотни объектов для работы.Так может кто-нибудь сказать мне, что я должен делать.Спасибо.

Ответы [ 3 ]

4 голосов
/ 26 сентября 2011

Предполагая, что вы используете NSDateFormatter, вы должны соблюдать рекомендации Apple, кэширующие форматеры для эффективности .Вместо того, чтобы создавать NSDateFormatter каждый раз, когда вы хотите преобразовать дату, вы должны хранить один экземпляр вашего NSDateFormatter.Из Руководство по форматированию данных :

Кэш-форматеры для эффективности

Создание форматера даты - не дешевая операция.Если вы, вероятно, будете часто использовать средство форматирования, обычно более эффективно кэшировать один экземпляр, чем создавать и распоряжаться несколькими экземплярами.Одним из подходов является использование статической переменной.

0 голосов
/ 26 сентября 2011

Я думаю, этот блок кода поможет вам:

        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"<Add Your Date Format>"];

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

        NSDateComponents *dateComponent = [calendar components:NSYearCalendarUnit
                                        |NSMonthCalendarUnit
                                        |NSDayCalendarUnit 
                                        fromDate:[dateFormatter dateFromString: <Add Your Date String> ]];

        [dateComponent setHour:24];
        [dateComponent setMinute:00];
        [dateComponent setSecond:00];

        <Your NSDate Object> = [calendar dateFromComponents:dateComponent];

Возможно, потребуется изменить значения dateComponent для часов, минут, секунд - в соответствии с вашим календарным временем.если у вас возникнут какие-либо проблемы в этом ..

0 голосов
/ 26 сентября 2011
    NSDateFormatter *formatter=[[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"HH:mm:ss:SSS"];
     NSDate *currentdate=[formatter dateFromString:currentdateStr];
 //it returns DateObject If String in Specified Format otherwise Returns nil;
...