If I have a dictionary like
{
name: \"Bob\",
cars: [
{ make: \"ford\", year: \"1972\" },
{ make: \"mazda\", year: \"2000\" }
],
}
+[NSValueTransformer mtl_externalRepresentationArrayTransformerWithModelClass:]
is deprecated. The new API is +[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:]
.
After switching to the new API, the models can be initialized with the default initializers provided by, e.g., MTLJSONAdapter
.
+ (NSValueTransformer *)carsJSONTransformer {
return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:CarModel.class];
}
Read more here
Ah figured it out. I needed to add a private method:
+ (NSValueTransformer *)carsTransformer
{
return [NSValueTransformer mtl_externalRepresentationArrayTransformerWithModelClass:[CarModel class]];
}
and make sure I used:
[PersonModel modelWithExternalRepresentation:dict];
A note on:
[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:CarModel.class];
This methods seems to now be deprecated. I'm using this new method in my code and it appears to be working just fine:
[MTLJSONAdapter arrayTransformerWithModelClass:CarModel.class];
+[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:]
This method is deprecated. New method is:
+ (NSValueTransformer *)carsTransformer
{
return [MTLJSONAdapter arrayTransformerWithModelClass:[CarsModel class]];
}