文档地址:https://github.com/ibireme/YYModel
NSDictionary *testDic = @{@"groupId":@"01",
@"result":@[
@{@"name":@"Lucy", @"sex":@"male"},
@{@"name":@"Lily", @"sex":@"feMale"},
@{@"name":@"Limei", @"sex":@"male"}
]
};
此处我设置 GroupUserModel 和 UserModel
@interface GroupUserModel : NSObject<YYModel>
@property (nonatomic, copy) NSString *groupId;
@property (nonatomic, strong) NSArray *result;
@end
#import "GroupUserModel.h"
#import "UserModel.h"
@implementation GroupUserModel
// 包含
+ (NSDictionary *)modelContainerPropertyGenericClass {
return @{
@"result" : [UserModel class],
@"groupId" : @"groupId"
};
}
// 白名单
+ (NSArray *)modelPropertyWhitelist {
return @[@"result",
@"groupId"];
}
@end
@interface UserModel : NSObject<YYModel>
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *sex;
@end
#import "UserModel.h"
@implementation UserModel
// custom
+ (NSDictionary *)modelCustomPropertyMapper {
return @{@"name" : @"name",
@"sex" : @"sex",
};
}
// 白名单
+ (NSArray *)modelPropertyWhitelist {
return @[@"name",
@"sex"];
}
@end
解决
self.groupUserModel = [GroupUserModel yy_modelWithDictionary:testDic];
self.dataArray = [NSMutableArray arrayWithArray:self.groupUserModel.result];
for (UserModel *model in self.dataArray) {
NSLog(@"name === %@",model.name);
}
问题二: 有时我们Model中 .m 文件中写下面几个方法,老是没有提示,需要人工复制。。。
+ (nullable NSDictionary<NSString *, id> *)modelContainerPropertyGenericClass;
+ (nullable NSDictionary<NSString *, id> *)modelCustomPropertyMapper;
+ (nullable NSArray<NSString *> *)modelPropertyWhitelist;
+ (nullable NSArray<NSString *> *)modelPropertyBlacklist;
其实只要让 model 遵从<YYModel>协议就 OK 啦
问题三:直接用数组转 Model
@interface NSDictionary (YYModel)
+ (nullable NSDictionary *)yy_modelDictionaryWithClass:(Class)cls json:(id)json;
注意这个方法,直接套就 OK 啦
总的来说,github 中的说明文档足够可以满足我们的需求,细心阅读,我出问题也是没有详细了解的原因