首页 > 移动平台 > 详细

iOS中将后台JSON数据转化为模型的坑

时间:2016-02-25 11:39:42      阅读:179      评论:0      收藏:0      [点我收藏+]

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

    }];

    }

 

 

 

 

 

 

iOS中将后台JSON数据转化为模型的坑

原文:http://www.cnblogs.com/Ninesday/p/5216220.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!