2012-01-12 51 views
5

对于我正在使用RestKit的iOS应用程序,我需要将unix时间戳 changed =“1325470840”解析为NSDate。我知道我可以手动在iOS中使用RestKit解析unix时间戳

[NSDate dateWithTimeIntervalSince1970:1325470840] 

这样做,但我使用RestKits核心的数据整合,这是使用日期格式化,如下面的幕后处理。

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

有谁知道如何创建的日期格式解析Unix时间戳?或者我可以怎样去解析这与RestKit?

+2

我发现这个问题,事实证明,服务器返回的是一个字符串而不是数字的时间戳。我会尽快发布我的解决方案(由于声望不到100,我必须等待8小时) – xizor 2012-01-12 21:12:54

回答

3

嗯,我发现我的问题。 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; 
}