iosframeworksgithub-mantle

How to specify child objects type in an NSArray with Mantle


If I have a dictionary like

{
  name: "Bob",
  cars: [
    { make: "ford", year: "1972" },
    { make: "mazda", year: "2000" }
  ],
}

and two models like:

@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

How do I use Mantle so that my array of cars in my person model are CarModels?


Solution

  • 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];