关于YYModel的使用以及与MJExtension的一些比较

1>YYModel是干啥的?
YYModel是一个性能非常好的字典转模型的框架,目前来讲性能仅次于系统的KVC,
关于字典转模型的框架我以前用的是一个MJExtension,这个是李明杰写的一个框架。也是非常好用的。
首先要膜拜以下 YYModel的作者bireme
2>怎么用?
其实github上有中文注释,这里也小小地总结一下:

第一种情况是:自动转

先创建一个模型类(示例)

@interface DHPerson : NSObject

@property (nonatomic, copy) NSString *name;

@property (nonatomic, assign) NSInteger age;

@end

@implementation DHPerson

- (NSString *)description

{

    return [NSString stringWithFormat:@"name = %@, age = %ld", _name,_age];

}

 

@end


在控制器的ViewDidLoad里面实现如下代码

// 1.这是最简单的一种

- (void)viewDidLoad {

    [super viewDidLoad];

    NSString *json = @"{"name":"shabi","age":20}";

  DHPerson *person = [DHPerson yy_modelWithJSON:json];

  NSLog(@"%@",person);

 

}

//  2.当json数据与模型属性的key不一致时

    NSString *json = @"{"name_name":"shabi","age":20}";

    // 1json转模型

    DHPerson *person = [DHPerson yy_modelWithJSON:json];

    NSLog(@"%@",person);

这个时候需要在模型里面实现YYModel的一个协议,实现下面方法就可以啦

#import "YYModel.h"

@interface DHPerson()<YYModel> // 遵守协议(其实遵不遵守都无所谓,这里只是为了能够敲出下面代码)

@end

@implementation DHPerson

+ (NSDictionary<NSString *,id> *)modelCustomPropertyMapper

{

    return @{@"name" : @"name_name"};

 

}


3> 当模型里面的属性是一个对象时,这个时候不需要做任何事情

    NSString *json = @"{"name_name":"shabi","age":20, "dog":{"dogName":"辛巴"}}";

    // 1json转模型

    DHPerson *person = [DHPerson yy_modelWithJSON:json];

    NSLog(@"%@",person);

也就是说当你的模型里面有属性也是一个对象时,YYModel会自动检测有没有这个对应的类,如果你在当前项目里面创建了这个类,它就会去试着去创建,创建成功了会自动帮你转成模型,不需要你做任何事情就想第一种情况说的一样。

4>当你的模型属性是一个数组时,

#import


@class DHDog;

@interface DHPerson : NSObject

@property (nonatomic, copy) NSString *name;

@property (nonatomic, assign) NSInteger age;

@property (nonatomic, strong) NSArray *dogs;

 

@end

这个时候只需要在模型类里面添加以下代码

+ (NSDictionary<NSString *,id> *)modelContainerPropertyGenericClass

{

    return @{@"dogs" : NSClassFromString(@"DHDog")};

}

// 未完待续、、、、、

你可能感兴趣的:(iOS)