YYModel解析数组数据

YYModel解析数组数据

YYModel一直是我多个项目里转换model的不二选择,如果产品在设计初期就和后端统一好属性格式,后期就基本不需要添加什么代码。不过在遇到返回的数据直接就是一个model数组的情况下(比如返回了10个User Model),YYModel并没有现成的内部实现方法,需要我们自己遍历一遍数组,或者创建一个Models数组类,但都太麻烦。于是自己写了一个很简单的工具类,就一个方法。

+ (NSArray *)jsonsToModelsWithJsons:(NSArray *)jsons {
    NSMutableArray *models = [NSMutableArray array];
    for (NSDictionary *json in jsons) {
        id model = [[self class] yy_modelWithJSON:json];
        if (model) {
            [models addObject:model];
        }
    }
    return models;
}

原理也很简单,就是把数组里面的字典一个个拿出来,然后用YYModel解析,就和你在拿到这些数组数据后所做的一模一样,只不过这次遍历代码只需写一次就行。

有个问题是我们该如何得知要转换的Model是哪一个,是以参数的形式传进来吗?当然可以这么做,不过我们可以用另外一种方式让我们的调用更方便。就像YYModel一样,直接用Model的类调用类方法,比如说这样:

NSArray *gifts = [GiftModel jsonsToModelsWithJsons:responseObject];

要做到这种不为每个类单独写方法,就给每个类添加方法,聪明的你一定想到了,就是为这些类的父类写一个Category。而YYModel的Model父类都是NSObject,很显然我们只要给NSObject写一个Category就OK了。

@interface NSObject (DBModelTool)
+ (NSArray *)jsonsToModelsWithJsons:(NSArray *)jsons;
@end

@implementation NSObject (DBModelTool)
+ (NSArray *)jsonsToModelsWithJsons:(NSArray *)jsons {
    NSMutableArray *models = [NSMutableArray array];
    for (NSDictionary *json in jsons) {
        id model = [[self class] yy_modelWithJSON:json];
        if (model) {
            [models addObject:model];
        }
    }
    return models;
}
@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容