RestKit将1435819788000
的日期值转换为47469-04-26 14:00:00 +0000
。我想问题是使用毫秒的Java日期表示与使用秒的Unix日期表示之间的区别。我想我需要设置一个转换器。我怎样才能做到这一点? (我在GitHub上看到rk变换器,但我不知道如何使用它们或在哪里找到合适的变压器。)
编辑:这是执行其余调用的代码
NSURL *baseURL = [NSURL URLWithString:@"some url"];
NSURLRequest *request = [NSURLRequest requestWithURL:baseURL];
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Price class]];
[mapping addAttributeMappingsFromDictionary:@{@"id": @"ron95", @"ron95": @"ron92", @"dieselNormal": @"dieselNormal", @"dieselSpecial": @"dieselSpecial", @"postDate": @"postDate"}];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodGET pathPattern:nil keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
RKObjectRequestOperation *objectRequestOperation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]];
[objectRequestOperation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSArray *prices = [mappingResult array];
编辑:我想我现在有效了。以下是我的工作方式。
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Price class]];
[mapping addAttributeMappingsFromDictionary:@{@"id": @"ron95", @"ron95": @"ron92", @"dieselNormal": @"dieselNormal", @"dieselSpecial": @"dieselSpecial"}];
RKBlockValueTransformer *numberToDateValueTransformer = [RKBlockValueTransformer valueTransformerWithValidationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) {
// This transformer handles `NSNumber` <-> `NSDate` transformations
return (([sourceClass isSubclassOfClass:[NSNumber class]] && [destinationClass isSubclassOfClass:[NSDate class]]) ||
([sourceClass isSubclassOfClass:[NSDate class]] && [destinationClass isSubclassOfClass:[NSNumber class]]));
} transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, __unsafe_unretained Class outputValueClass, NSError *__autoreleasing *error) {
RKValueTransformerTestInputValueIsKindOfClass(inputValue, (@[ [NSNumber class], [NSDate class] ]), error);
RKValueTransformerTestOutputValueClassIsSubclassOfClass(outputValueClass, (@[ [NSNumber class], [NSDate class] ]), error);
if ([outputValueClass isSubclassOfClass:[NSDate class]]) {
if ([inputValue isKindOfClass:[NSNumber class]]) {
*outputValue = [NSDate dateWithTimeIntervalSince1970:[inputValue doubleValue] / 1000];
}
} else if ([outputValueClass isSubclassOfClass:[NSNumber class]]) {
*outputValue = @([inputValue timeIntervalSince1970]);
}
return YES;
}];
RKAttributeMapping *postDateMapping = [RKAttributeMapping attributeMappingFromKeyPath:@"postDate" toKeyPath:@"postDate"];
postDateMapping.valueTransformer = numberToDateValueTransformer;
[mapping addPropertyMapping:postDateMapping];