首先demo結(jié)構(gòu)
33260F48-9263-45DC-8901-A1B0D0C856BB.png
1, model琉闪, .m文件中不需要寫任何東西
B838F142-F2D6-407A-BF4F-44E61DD7FF6C.png
2,創(chuàng)建一個(gè)NSObject的擴(kuò)展
4A9EA170-9907-47AC-A18A-CBFCF23D9154.png
.m文件內(nèi)容
#import "NSObject+FYJsonToModel.h"
#import <objc/runtime.h>
@implementation NSObject (FYJsonToModel)
// 利用 Runtime
-(void)fy_modelSetWithDictionary:(NSDictionary *)dictionary
{
if (dictionary == nil){
return;
}
unsigned int outCount =0;
Ivar*vars =class_copyIvarList([self class], &outCount);//獲取到所有的成員變量列表
//遍歷所有的成員變量
for(int i =0; i < outCount; i++) {
Ivar ivar = vars[i];//取出第i個(gè)位置的成員變量
const char*propertyName =ivar_getName(ivar);//獲取變量名
NSString*proOcName = [NSString stringWithUTF8String:propertyName];
id jsonValue = [dictionary objectForKey:[proOcName stringByReplacingOccurrencesOfString:@"_" withString:@""]];
object_setIvar(self, ivar,jsonValue);
}
}
@end
3砸彬,使用
A4DF7772-A0B0-416A-9AF5-D2226DDA5DCF.png
我們不生產(chǎn)代碼 我們只是代碼的搬運(yùn)工 原文連接