Polymorph 1.0.7

Polymorph 1.0.7

测试已测试
Lang语言 Obj-CObjective C
许可证 BSD
发布最后发布2017年4月

Tony Lidaydayfree 维护。



 
依赖于
libextobjc/EXTScope~> 0.4
libextobjc/RuntimeExtensions~> 0.4
 

Polymorph 1.0.7

  • Tony Li

Polymorph 将敌人变成羊。

通过使用类似 @dynamic 的指令,将字典的转换值转换为 Objective-C 类的属性。

使用方法

假设我们有一个 Movie 类。

@interface Movie : PLMModel

@property (nonatomic, readonly) NSString *identifier;
@property (nonatomic, readonly) NSString *title;
@property (nonatomic, readonly) NSString *year;
@property (nonatomic, readonly) NSString *subtype;
@property (nonatomic, readonly) float rating;
@property (nonatomic, readonly) NSArray<Celebrity *> *casts;

@end

我们不需要为每个属性实现访问器方法,可以使用 plm_dynamic 宏来自动生成 getter 和 setter。

@implementation Movie

// Property `identifier` comes from `id` field。
@plm_dynamic(identifier, @"id")

// Property `title` comes from field with same name `title`.
@plm_dynamic(title)

// `year` and `subtype` comes from fields with same names.
@plm_dynamic_multi(year, subtype)

// `rating` comes from `rating.average` keypath. Field value will be transformed to `float` as it's declared.
@plm_dynamic_keypath(rating, @"rating.average")

// `casts` comes from `casts` field. Field value, which is an object array, will be transformed to NSArray with Celebrity instance.
@plm_dynamic(casts, @"casts", PLMArrayTransformerNameForClass([Celebrity class]))

@end

plm_dynamic 宏将属性与字典字段关联起来,使用 NSValueTransformer 将字典值转换为声明类型。有关详细用法,请参阅 Polymorph.h 中的注释。

不使用继承

您还可以在未扩展 PLMModel 的情况下使用 Polymorph。遵从 PLMRawDataProvider 协议,调用 plm_activate,然后即可开始使用。

许可证

Polymorph 在 BSD 许可证下发布。有关更多信息,请参阅 LICENSE