實現(xiàn)一級字典轉(zhuǎn)模型
核心方法注解
// ivar:成員屬性
// class_copyIvarList:把成員屬性列表復(fù)制一份給你
// Ivar *:指向Ivar指針
// Ivar *:指向一個成員變量數(shù)組
// class:獲取哪個類的成員屬性列表
// count:成員屬性總數(shù)
// Ivar *ivarList = class_copyIvarList(<#__unsafe_unretained Class cls#>, <#unsigned int *outCount#>)
具體實現(xiàn)
+ (instancetype)modelWithDictionary:(NSDictionary *)dictionary
{
// 創(chuàng)建 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;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者