1.Parent.h
:
@class Son;
@interface Parent : NSObject
@property (nonatomic, strong) Son *son;
@end
#pragma mark - son
@interface Son : NSObject
@property (nonatomic, copy) NSString *name;
@end
2.Parent.m
@implementation Parent
@end
3.解析如下:
NSDictionary *dict = @{
@"son" : @{
@"name" : @"Jack",
},
};
[Parent mj_objectWithKeyValues:dict];
此时解析会失败,通过 [Parent mj_objectWithKeyValues:dict]
只能解析第一层,默认son解析成了NSDictionary
。
标准的写法:
把Son单独拉出来当成另外一个类文件,在Parent.h中#import "Son.h"
,通过[Parent mj_objectWithKeyValues:dict];
可以成功解析!
那么问题出在哪里?
一度我误以为是MJExtentsion的bug,并且github提交了issue,
细心的朋友应该会发现我的Parent.m
文件中是缺少Son的实现代码如下:
@implementation Son
@end
昨晚凌晨的时候 我又亲自代码试了一下,修改了Parent.m
,如下:
@implementation Parent
@end
#pragma mark - Son
@implementation Son
@end
然后,通过[Parent mj_objectWithKeyValues:dict];
可以成功解析!
心中一万头草泥马狂奔而过...
总结:
几乎每个项目中大家都会创建很多的model类,但是有些model类其实只会用到一次,并且依赖于其他的model类,这个时候都会选择多个model类写在同一个类文件下,但是,请千万留意xxx.m
文件的代码实现,这种语法错误是非常容易犯的。
再次感谢
感谢MJExtension为广大开发者带来的方便!