ios - Mantle如何将数组里面的几个元素映射到不同的属性上呢?
阿神
阿神 2017-04-17 14:59:09
[iOS讨论组]

现在我接收到的JSON是这样的

{
  "data" : [
    0.26,
    0.03,
    24.22,
    16.15,
    16.15
  ],
  "status" : true,
  "text" : ""
}

我需要用mantle将data里面的5个数组映射到model上的5个属性。比如这样:

@property(nonatomic,copy)NSNumber * firstNum;
@property(nonatomic,copy)NSNumber * secondNum;
@property(nonatomic,copy)NSNumber * thirdNum;
@property(nonatomic,copy)NSNumber * fourthnum;
@property(nonatomic,copy)NSNumber * fifthNum;
@property(nonatomic,copy)NSString * text;
@property(nonatomic)BOOL status;    

然后我在网上查到了这样一个方法

 + (NSValueTransformer *)pointListJSONTransformer
 {
     return [MTLValueTransformer transformerWithBlock:^id(NSArray *array) {
         return [array firstObject];
     }];
 }

这样可以将某个数组的的单个元素拿出来作为属性
但是我现在有多个,那到底应该怎么做呢

阿神
阿神

闭关修行中......

全部回复(2)
怪我咯

你需要2个模型
.h 文件

@interface HLModelDataInfo : MTLModel<MTLJSONSerializing>
@property(nonatomic,copy)NSNumber * firstNum;
@property(nonatomic,copy)NSNumber * secondNum;
@property(nonatomic,copy)NSNumber * thirdNum;
@property(nonatomic,copy)NSNumber * fourthnum;
@property(nonatomic,copy)NSNumber * fifthNum;
@end

@interface HLModelData : MTLModel<MTLJSONSerializing>
@property (strong, nonatomic) HLModelData *data;
@property (assign, nonatomic) BOOL status;
@property (strong, nonatomic) NSString *text;
@end

.m文件中你除了实现协议外 再实现一个映射到数组的NSValueTransformer

+ (NSValueTransformer *)dataJSONTransformer{
    return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:HLModelDataInfo.class];
}

ringa_lee

首先感觉你这个json文件结构和你代码中的对象模型不匹配,要么是json文件结构错了,要么是代码的对象模型错了。json文件结构应该是和代码有清晰的对应关系的,像你给的这段代码中用array中的字段去匹配对象属性感觉不太妥当,建议修改文件结构,或者代码对象模型。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号