如果我有像
这样的词典{
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
我如何使用地幔这样我个人模型中的汽车阵列是CarModels?
答案 0 :(得分:20)
啊想通了。我需要添加一个私有方法:
+ (NSValueTransformer *)carsTransformer
{
return [NSValueTransformer mtl_externalRepresentationArrayTransformerWithModelClass:[CarModel class]];
}
并确保我使用了:
[PersonModel modelWithExternalRepresentation:dict];
答案 1 :(得分:13)
+[NSValueTransformer mtl_externalRepresentationArrayTransformerWithModelClass:]
已弃用。新API为+[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:]
。
切换到新API后,可以使用例如MTLJSONAdapter
提供的默认初始化程序初始化模型。
答案 2 :(得分:12)
关于:
的说明[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:CarModel.class];
现在似乎不推荐使用此方法。我在我的代码中使用了这种新方法,它似乎工作得很好:
[MTLJSONAdapter arrayTransformerWithModelClass:CarModel.class];
答案 3 :(得分:4)
+ (NSValueTransformer *)carsJSONTransformer {
return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:CarModel.class];
}
了解更多here
答案 4 :(得分:0)
+[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:]
不推荐使用此方法。新方法是:
+ (NSValueTransformer *)carsTransformer
{
return [MTLJSONAdapter arrayTransformerWithModelClass:[CarsModel class]];
}