博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS中将后台JSON数据转化为模型的总结
阅读量:4945 次
发布时间:2019-06-11

本文共 1623 字,大约阅读时间需要 5 分钟。

1.

再拿到了Json数据后怎么把字典写到数组里面去呢?

  方法1:用最原始的方法  

  

-(instancetype)initWithDict:(NSDictionary *)dict {

    if(self = [super init]) {

        [self setValuesForKeysWithDictionary:dict];

    }

    return self;

}

 

+(instancetype)modelWithDict:(NSDictionary *)dict {

    return [[self alloc] initWithDict:dict];

}

//这个方法一定要写上  ,不然就回报警告的,什么警告呢? undefiedforKey

- (void)setValue:(id)value forUndefinedKey:(NSString *)key

{

    

}

这行代码的作用就是为了避免在你的json'数据的字典在很多个的情况下  然后呢你的.h文件里面可能只有几个字段 而并没有吧json数据里面的全部字段用上的时候这个时候这个就起作用了,这行代码的就可以把多余的字段因为没有一一的键值对应给忽略了

 

比如这个时候json数据的层级结构是这样的

{
"result": true, "page": 1, "totalPage": 1, "dicMap": { }, "varList": [ { }, { } ] } //

  你可以这样去解析数据

    NSArray *data  = dict[@"varList"];

        

        for(NSDictionary *dict3 in data) {

            ZYGuess *guess = [ZYGuess modelWithDict:dict3];

            NSLog(@" -----==%@=========",guess);

        }

 

方法2,使用JSONModel框架   

使用说明 :

 

 

 这个是我建立的模型层次结构

 

 

#import "JSONModel.h"

#import "ZYCarouselList.h"

#import "ZYSpecialList.h"

#import "ZYHotSaleList.h"

#import "ZYGuessList.h"

@interface ZYHomeModel : JSONModel

@property (nonatomic,strong) ZYCarouselList *carousel;

@property (nonatomic,strong) ZYSpecialList *special;

@property (nonatomic,strong) ZYHotSaleList *sale;

@property (nonatomic,strong) ZYGuessList *guess;

 关键就在这个地方出错了,因为他们这个json数据它们是没有并列的层级关系、

我现在拿到的json数据只是一个接口的数据 

@property (nonatomic,strong) ZYCarouselList *carousel;

@property (nonatomic,strong) ZYSpecialList *special;

@property (nonatomic,strong) ZYHotSaleList *sale;

和着3个没有一点的关系

层级结构错了   所以打印出来的模型一直为null

      ZYGuessList *model = [[ZYGuessList alloc]initWithDictionary:dict error:NULL];

        NSLog(@"%@",model);

这个时候就可以直接转为模型了

转载于:https://www.cnblogs.com/Ninesday/p/5216264.html

你可能感兴趣的文章
什么是MVC
查看>>
新建web project不自动生成web.xml解决方案
查看>>
如何快速访问MSDN某一个类或方法的帮助文档
查看>>
SqlServer 删除重复记录
查看>>
win10下sublime text3 使用view in browser的快捷鍵添加方式
查看>>
【Linux】神奇的kill
查看>>
关于radio属性如何添加成为双击取消
查看>>
Servlet的生命周期
查看>>
《Linux 性能及调优指南》1.1 Linux进程管理
查看>>
Spring Security使用心得
查看>>
操作系统简介
查看>>
【IntelliJ 】IntelliJ IDEA 15 创建maven项目
查看>>
mysql中的union用法以及子查询综合应用
查看>>
jQuery使用总结
查看>>
Oracle数据库事物隔离级别
查看>>
多变的形状
查看>>
Navicat For Mysql快捷键
查看>>
Git学习笔记4
查看>>
【Android】用Cubism 2制作自己的Live2D——官方App样例源码学习(2)!
查看>>
利用锚点制作简单索引效果
查看>>