实现一级字典转模型
核心方法注解
// ivar:成员属性
// class_copyIvarList:把成员属性列表复制一份给你
// Ivar *:指向Ivar指针
// Ivar *:指向一个成员变量数组
// class:获取哪个类的成员属性列表
// count:成员属性总数
// Ivar *ivarList = class_copyIvarList(<#__unsafe_unretained Class cls#>, <#unsigned int *outCount#>)
具体实现
+ (instancetype)modelWithDictionary:(NSDictionary *)dictionary
{
// 创建 model
id objc = [[self alloc] init];
unsigned int count = 0;
Ivar *ivarList = class_copyIvarList(self, &count);
for (NSInteger i = 0; i < count; i++) {
Ivar ivar = ivarList[i];
// 获取成员名
NSString *propertyName = [NSString stringWithUTF8String:ivar_getName(ivar)];
// 成员属性类型
NSString *propertyType = [NSString stringWithUTF8String:ivar_getTypeEncoding(ivar)];
// 获取 key
NSString *keyString = [propertyName substringFromIndex:1];
id value = dictionary[keyString];
if (value) {
// KVC赋值:不能传空
[objc setValue:value forKey:keyString];
}
}
return objc;
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。