• 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);

        }];

        }

     
  • 相关阅读:
    商贸通帐套隐藏方法
    固定资产打开提示:上年度数据未结转!
    ZOJ 2432 Greatest Common Increasing Subsequence
    POJ 1080 Human Gene Functions
    POJ 1088 滑雪
    POJ 1141 Brackets Sequence
    POJ 1050 To the Max
    HDOJ 1029 Ignatius and the Princess IV
    POJ 2247 Humble Numbers
    HDOJ 1181 变形课
  • 原文地址:https://www.cnblogs.com/Ninesday/p/5216220.html
Copyright © 2020-2023  润新知