误以为是MJExtension的Bug:一个类文件中声明了Parent 和 Son两个类,Parent类中有一个属性@property (nonatomic, strong) Son *son;通过 `[Parent mj_objectWithKeyValues:dict]` 解析失败

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为广大开发者带来的方便!

你可能感兴趣的:(误以为是MJExtension的Bug:一个类文件中声明了Parent 和 Son两个类,Parent类中有一个属性@property (nonatomic, strong) Son *son;通过 `[Parent mj_objectWithKeyValues:dict]` 解析失败)