gpt4 book ai didi

ios - 在 iOS 中使用 Mantle 将带有时间戳的 NSArray 映射到 NSDate 对象

转载 作者:行者123 更新时间:2023-11-29 02:20:20 25 4
gpt4 key购买 nike

例如,我有一个带有属性的 MTLModel 子类 Order

 @property (nonatomic, copy) NSArray *dates;
@property (nonatomic, strong) NSDate *dateFrom;
@property (nonatomic, strong) NSDate *dateTo;

来自服务器的 JSON 看起来像:

 order =     {
dates = (
1422784800,
1422784843
);
}

有没有可能,m.b.在 + (NSValueTransformer *)datesJSONTransformer 中将 JSON 中的这两个时间戳转换为 NSDate 对象? (dateTo, dateFrom pr-s 类)

最佳答案

Mantle 1.x 没有提供将 JSON 中的字段映射到多个模型属性的简单方法。鉴于下面的模型实现,这应该有效:

NSDictionary *JSONDictionary = @{
@"dates" : @[ @1422784800, @1422784843 ]
};
NSError *error = nil;
Order *order = [MTLJSONAdapter modelOfClass:Order.class fromJSONDictionary:JSONDictionary error:&error];
NSLog(@"Order is from %@ to %@", order.dateFrom, order.dateTo);

订单执行:

@implementation Order

- (NSDate *)dateFrom
{
if ([self.dates count] > 0) {
return self.dates[0];
}
return nil;
}

- (NSDate *)dateTo
{
if ([self.dates count] > 1) {
return self.dates[1];
}
return nil;
}

#pragma mark - MTLJSONSerializing

+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
@"dates" : @"dates"
};
}

+ (NSValueTransformer *)datesJSONTransformer
{
return [MTLValueTransformer transformerWithBlock:^NSArray *(NSArray *dates) {
if (![dates isKindOfClass:NSArray.class]) {
return nil;
}
NSMutableArray *dateObjects = [NSMutableArray arrayWithCapacity:dates.count];
for (NSNumber *timestamp in dates) {
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[timestamp doubleValue]];
[dateObjects addObject:date];
}
return [dateObjects copy];
}];
}

@end

关于ios - 在 iOS 中使用 Mantle 将带有时间戳的 NSArray 映射到 NSDate 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28231295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com