Разбор временной метки unix с помощью RestKit в iOS

Для приложения iOS, над которым я работаю с RestKit, мне нужно проанализировать временную метку unix, измененную = «1325470840», в NSDate. Я знаю, что могу сделать это вручную с помощью

[NSDate dateWithTimeIntervalSince1970:1325470840]

Но я использую интеграцию основных данных RestKits, и это обрабатывается за кулисами с помощью средств форматирования даты, например, ниже.

[RKObjectMapping addDefaultDateFormatterForString:@"E MMM d HH:mm:ss Z y" inTimeZone:nil];

Кто-нибудь знает, как создать средство форматирования даты для анализа временной метки unix? Или как я могу разобрать это с помощью RestKit?


person xizor    schedule 12.01.2012    source источник
comment
Я нашел проблему, оказывается, сервер возвращает временную метку в виде строки, а не числа. Я опубликую свое решение, как только смогу это сделать (мне нужно ждать 8 часов из-за репутации менее 100)   -  person xizor    schedule 13.01.2012


Ответы (1)


Ну, я нашел свою проблему. RestKit исправил это в выпуске № 141, но сервер, с которым я связываюсь, возвращает строку вместо ожидаемого числа, поэтому автоматический синтаксический анализатор не знает, что с ней делать. Я создал запрос на добавление парсера NSString > NSNumber > NSDate в RestKit (#503). Тем временем я вручную обновляю строку до числа, как показано ниже, прежде чем произойдет фактический синтаксический анализ.

- (void)objectLoader:(RKObjectLoader *)loader willMapData:(inout id *)mappableData
{
    NSArray *dateKeys = [NSArray arrayWithObjects:@"changed", nil];
    NSMutableArray *reformattedData = [NSMutableArray arrayWithCapacity:[*mappableData count]];

    for(id dict in [NSArray arrayWithArray:(NSArray*)*mappableData]) {
        NSMutableDictionary* newDict = [dict mutableCopy];
        for(NSString *dateKey in dateKeys) {
            NSNumber *num = [NSNumber numberWithInt:[[newDict valueForKey:dateKey] intValue]];
            [newDict setValue:num forKey:dateKey];
        }
        [reformattedData addObject:newDict];
    }
    *mappableData = reformattedData;
}
person xizor    schedule 13.01.2012