2012-01-12 40 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; 
}