zoukankan      html  css  js  c++  java
  • iOS中将后台JSON数据转化为模型的坑

    再拿到了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);

        }];

        }

     
  • 相关阅读:
    python安装依赖包方法
    python 连接mysql数据库
    python学习5 爬虫老是被封如何解决
    python4
    python mysql增删改查
    jieba.analyse jieba.textrank 简单用法
    记录一些小问题
    《面向模式的软件体系架构》读书笔记(三)
    《面向模式的软件体系架构》读书笔记(二)
    安全性战术
  • 原文地址:https://www.cnblogs.com/Ninesday/p/5216220.html
Copyright © 2011-2022 走看看