MJExtension是大神李明杰寫的模型字典互轉(zhuǎn)的一個第三方肾档,只用一段代碼就能實現(xiàn)簡單以及復(fù)雜的轉(zhuǎn)換問題,非常方便辫继,今天學(xué)習(xí)了一下怒见,下面寫幾個常用的。在這里還要感謝一下@PP_Abner幫忙解決問題姑宽,請大家下載最新第三方(老版本會有問題遣耍,本人親測)。
廢話少說炮车,進入主題配阵。
將MJExtension導(dǎo)入工程中,然后無需再做任何操作示血,他會自動讓你新建的model繼承他里面的方法(真是天然無公害呀棋傍。。)
1.字典轉(zhuǎn)模型
MyModel.h
@property (copy,nonatomic) NSString *name;
@property (nonatomic, strong) NSString *sex;
@property (nonatomic, assign) int age;
@property (nonatomic, assign) float money;
viewController.m
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"lisi",@"name",@"男",@"sex",@"20",@"age",@"1000",@"money", nil];
MyModel *model = [MyModel mj_objectWithKeyValues:dic]; //在這里一句話就轉(zhuǎn)了過去
NSLog(@"name == %@, age == %d, sex == %@, money == %.2f", model.name,model.age,model.sex,model.money);
2.模型轉(zhuǎn)模型
InfoModel.h
@property (nonatomic, strong) MyModel *JJmymodel;
@property (nonatomic, strong) NSString *schName;
@property (nonatomic, assign) int StuNumber;
viewController.m
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"北大",@"schName",@"20000",@"StuNumber",dic,@"JJmymodel", nil]; //在這個字典中难审,有個數(shù)據(jù)是mymodel類型的
InfoModel *inModel = [InfoModel mj_objectWithKeyValues:dict];
NSLog(@"schName == %@, stuNum == %d, name == %@, age == %d, sex == %@, money == %.2f ", inModel.schName, inModel.StuNumber, inModel.JJmymodel.name, inModel.JJmymodel.age, inModel.JJmymodel.sex, inModel.JJmymodel.money);
3.模型中的屬性名和字典中的key不相同(或需要多級映射)
AnimalModel.h
@property (nonatomic, strong) NSString *Mydog;
@property (nonatomic, strong) NSString *Mypig;
@property (nonatomic , strong) NSString *Smallbird;
@property (nonatomic, strong) NSString *Bluecat;
數(shù)據(jù)源中的參數(shù)和我們model中定義的參數(shù)名不同或者是多級映射關(guān)系的瘫拣,則需要我們在model的.m文件中寫個+號方法,他會自動實現(xiàn)
+ (NSDictionary *)mj_replacedKeyFromPropertyName {
return @{
@"Mydog":@"dog",
@"Mypig":@"pig",
@"Smallbird":@"bird.twoBird",
@"Bluecat":@"mycat.bigCat"
}; //從這里可以看出告喊,model中的Mydog對應(yīng)我們數(shù)據(jù)源中的dog麸拄,Smallbird對應(yīng)bird.twoBird
}
viewController.m
NSDictionary *AnimatDic = @{@"dog":@"小狗",
@"pig":@"我的小豬",
@"bird":@{@"oneBird":@"111",
@"twoBird":@"222",
@"threeBird":@"333"},
@"mycat":@{@"smallCat":@"kity",
@"bigCat":@"tager"}}; //數(shù)據(jù)源
AnimalModel *animalModel = [AnimalModel mj_objectWithKeyValues:AnimatDic];
NSLog(@"dog == %@, pig == %@, bird == %@, cat == %@", animalModel.Mydog, animalModel.Mypig, animalModel.Smallbird, animalModel.Bluecat);
其他的以后有機會再補充完整,暫時常用的就這幾個黔姜。