2012-01-12 10 views
5

Per un'app iOS con cui sto lavorando RestKit Devo analizzare un timestamp unix modificato = "1325470840" in un NSDate. So che posso fare manualmente questo conAnalisi di timestamp unix con RestKit in iOS

[NSDate dateWithTimeIntervalSince1970:1325470840] 

Ma io sto usando RestKits l'integrazione dei dati di base e questo viene gestito dietro le quinte utilizzando formattatori di data, come di seguito.

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

Qualcuno sa come creare una data formattatore per analizzare un timestamp Unix? O come potrei andare a analizzare questo con RestKit?

+2

Ho trovato il problema, si scopre che il server restituisce il timestamp come stringa e non un numero. Pubblicherò la mia soluzione non appena potrò farlo (devo aspettare 8 ore perché ho meno di 100 reputazione) – xizor

risposta

3

Bene, ho trovato il mio problema. RestKit ha risolto questo problema nel numero 141, ma il server che sto contattando restituisce una stringa invece di un numero previsto in modo che il parser automatico non sappia cosa fare con esso. Ho creato una richiesta per aggiungere un parser NSString> NSNumber> NSDate a RestKit (# 503). Nel frattempo sto aggiornando manualmente la stringa su un numero come mostrato sotto prima che avvenga l'analisi vera e propria.

- (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; 
}