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

现在我接收到的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 @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 @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]; }
    左手右手慢动作

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

      最新下载
      更多>
      网站特效
      网站源码
      网站素材
      前端模板
      关于我们 免责声明 Sitemap
      PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!