如何使用地幔在NSArray中指定子对象types
如果我有一本像这样的字典
{ name: "Bob", cars: [ { make: "ford", year: "1972" }, { make: "mazda", year: "2000" } ], }
和两个模型,如:
@interface CarModel : MTLModel @property (nonatomic, strong) NSString *make; @property (nonatomic, strong) NSString *year; @end @interface PersonModel : MTLModel @property (nonatomic, strong) NSString *name; @property (nonatomic, strong) NSArray *cars; @end
我如何使用地幔使我的人模型中的汽车数组是CarModel?
啊找出来了。 我需要添加一个私有方法:
+ (NSValueTransformer *)carsTransformer { return [NSValueTransformer mtl_externalRepresentationArrayTransformerWithModelClass:[CarModel class]]; }
并确保我使用:
[PersonModel modelWithExternalRepresentation:dict];
已弃用+[NSValueTransformer mtl_externalRepresentationArrayTransformerWithModelClass:]
。 新的API是+[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:]
。
在切换到新的API之后,可以使用由例如MTLJSONAdapter
提供的默认初始化程序初始化MTLJSONAdapter
。
关于:
[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:CarModel.class];
这种方法似乎现在已经被弃用了。 我在我的代码中使用这个新的方法,它似乎工作得很好:
[MTLJSONAdapter arrayTransformerWithModelClass:CarModel.class];
+ (NSValueTransformer *)carsJSONTransformer { return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:CarModel.class]; }
在这里阅读更多
+[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:]
此方法已弃用。 新的方法是:
+ (NSValueTransformer *)carsTransformer { return [MTLJSONAdapter arrayTransformerWithModelClass:[CarsModel class]]; }