Si j'ai un dictionnaire comme
{
name: "Bob",
cars: [
{ make: "ford", year: "1972" },
{ make: "mazda", year: "2000" }
],
}
et deux modèles comme:
@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
Comment utiliser Mantle pour que CarModels fasse partie de ma gamme de voitures de mon modèle personnel?
Ah l'a compris. J'avais besoin d'ajouter une méthode privée:
+ (NSValueTransformer *)carsTransformer
{
return [NSValueTransformer mtl_externalRepresentationArrayTransformerWithModelClass:[CarModel class]];
}
et assurez-vous que j'ai utilisé:
[PersonModel modelWithExternalRepresentation:dict];
+[NSValueTransformer mtl_externalRepresentationArrayTransformerWithModelClass:]
est obsolète. La nouvelle API est +[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:]
.
Après avoir basculé vers la nouvelle API, les modèles peuvent être initialisés avec les initialiseurs par défaut fournis, par exemple, MTLJSONAdapter
.
Une note sur:
[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:CarModel.class];
Cette méthode semble maintenant être obsolète. J'utilise cette nouvelle méthode dans mon code et cela semble bien fonctionner:
[MTLJSONAdapter arrayTransformerWithModelClass:CarModel.class];
+ (NSValueTransformer *)carsJSONTransformer {
return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:CarModel.class];
}
En savoir plus ici
+[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:]
Cette méthode est obsolète. La nouvelle méthode est:
+ (NSValueTransformer *)carsTransformer
{
return [MTLJSONAdapter arrayTransformerWithModelClass:[CarsModel class]];
}