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

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

再拿到了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": [ { }, { } ] } 然后你可以这样

 

 

 

 

 

1.在iOS中后台解析出来的数据带有小括号() 他就是表示的[]他就是表示数组和正常的解析是一样的

    [manager GET:@"" parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id  _Nonnull responseObject) {

        //拿到的2进制数据

//       NSLog(@"object %@",responseObject);

        

       // [responseObject handlerJSONData:responseObject];

    

//        NSLog(@"=====%@======", responseObject);

        

//          NSString *dict = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];

        

       

                NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:NULL];

 

 

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

       

//        self.guessModel = [self.guessModel initWithString:dict usingEncoding:NSUTF8StringEncoding error:nil];

        

//        self.guessModel = [self.guessModel initWithDictionary:dict error:NULL];

//          NSLog(@"-------------%@------------------",data);

    

      

        for (NSDictionary *dict1 in data) {   

            ZYGuess *guess = [ZYGuess modelWithDict:dict1] ;            

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

        }

//         NSLog(@"-------------%@------------------",self.guessModel);        

//        ZYGuess *guess = [[ZYGuess alloc] initWithDictionary:dict[@"varList"] error:nil];

//        ZYGuess *guess = [[ZYGuess alloc] initWithString:dict usingEncoding:NSUTF8StringEncoding error:nil];

//          NSLog(@"vvvvvv-----%@--VVVVVVV",self.guessModel);

//        NSLog(@"guess : %@",guess);

        

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        NSLog(@"%@",error);

    }];

    }

 

 

 

 

 

 

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

你可能感兴趣的文章
Linux查找命令对比(find、locate、whereis、which、type、grep)
查看>>
路由器外接硬盘做nas可行吗?
查看>>
python:从迭代器,到生成器,再到协程的示例代码
查看>>
Java多线程系列——原子类的实现(CAS算法)
查看>>
在Ubuntu下配置Apache多域名服务器
查看>>
多线程《三》进程与线程的区别
查看>>
linux sed命令
查看>>
html标签的嵌套规则
查看>>
[Source] Machine Learning Gathering/Surveys
查看>>
HTML <select> 标签
查看>>
类加载机制
查看>>
tju 1782. The jackpot
查看>>
湖南多校对抗赛(2015.03.28) H SG Value
查看>>
hdu1255扫描线计算覆盖两次面积
查看>>
hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
查看>>
bzoj3224 splay板子
查看>>
程序存储问题
查看>>
Mac版OBS设置详解
查看>>
优雅地书写回调——Promise
查看>>
android主流开源库
查看>>