如何使用RestKit将日期组件的字典映射到NSDate

时间:2014-11-18 02:24:05

标签: ios json restkit

我正在使用RestKit处理我的所有JSON响应。其中一个对象是日期,但它不是使用标准格式,而是一个带有日,月,年参数的对象......

{
  "date": {
    "day": 30,
    "month": 7,
    "year": 2014
  }
}

如何构建RKMappingRKValueTransformer来将其映射到NSDate对象?

1 个答案:

答案 0 :(得分:0)

这是我最终使用的内容。

RKValueTransformer *dateTransformer = [RKBlockValueTransformer valueTransformerWithValidationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) {
    return ([sourceClass isSubclassOfClass:[NSDictionary class]] && [destinationClass isSubclassOfClass:[NSDate class]]);
} transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, Class outputValueClass, NSError *__autoreleasing *error) {
    RKValueTransformerTestInputValueIsKindOfClass(inputValue, [NSDictionary class], error);
    RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, [NSDate class], error);
        NSDateComponents *dc = [[NSDateComponents alloc] init];
    dc.day = [inputValue[@"day"] integerValue];
    dc.month = [inputValue[@"month"] integerValue];
    dc.year = [inputValue[@"year"] integerValue];
    dc.calendar = [NSCalendar currentCalendar]; // This step is easy to forget.
    NSDate *aDate = dc.date;
    *outputValue = aDate;

    return YES;
}];

实际使用这个变压器...

[[RKValueTransformer defaultValueTransformer] addValueTransformer:dateTransformer];