关于数据解析

  1. 遇到字典里面又套了一层字典
    重写基类model的初始化init方法
 - (instancetype)initWithDictionary:(NSDictionary *)dictionary{

    self = [super init];

    if (self) {
        //vc里两句合一句
        [self setValuesForKeysWithDictionary:dictionary];
    }
    return self;
}

然后将这个方法声明出去, 在遇到字典里面又套了一层字典时, 也就是说其中一个key对应一个新的字典

例子
http://v3.wufazhuce.com:8000/api/movie/49/story/1/0

1.png

2.png

3.png

注意里面套着的user, 不要等到cell类的model赋值里面才把这层user解开, 在解析时就顺便解了, 所以把user先创建一个类, 然后作为外层model的一个model属性声明在外层model类.h中, 比如叫

@property (nonatomic, strong) MovieUserModel *userNew;

然后在.m中

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

    if ([key isEqualToString:@"user"]) {
    
        self.userNew = [[MovieUserModel alloc] initWithDictionary:value];
    
    }

}

这个initWithDictionary就是刚才在基类重写的方法
然后在cell类中用到的时候直接model.userNew.需要用的属性即可

  1. 如果请求下来的数据有诸如title, id的关键字需要过滤

在model类中

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

    if ([key isEqualToString:@"id"]) {
        self.idNew = value;
    }

}

以后需要调用.id的地方就调用idNew即可

  1. 如果一段解析结果如图所示
JSON结果.png

则解出来的response在VC可以直接, 不用遍历每一个key值

for (NSDictionary *dic in response[@"data"][@"data"]) {
        
            self.dataModel =[[MovieDataModel alloc] initWithDataSource:dic];
        
            [self.dataSource addObject:_dataModel];     
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 关于数据解析及数据模型转化 一个数组数据每个数组里面是字典数据,通过一个 "NowClientId" 来做到不同类...
    zero_zql阅读 600评论 0 0
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 5,494评论 1 23
  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 1,500评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,695评论 19 139
  • 现在基本上电商公司都开始考虑微商的传播方向了吧 最近负责了一个微商品牌的朋友圈打造,大部分时间和精力耗费在这个上面...
    笑鱼儿儿阅读 6,181评论 1 7

友情链接更多精彩内容