私が次のような辞書を持っている場合
{
name: "Bob",
cars: [
{ make: "ford", year: "1972" },
{ make: "mazda", year: "2000" }
],
}
そして次のような2つのモデル:
@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になるように、Mantleを使用するにはどうすればよいですか?
ああ、それを理解しました。プライベートメソッドを追加する必要がありました:
+ (NSValueTransformer *)carsTransformer
{
return [NSValueTransformer mtl_externalRepresentationArrayTransformerWithModelClass:[CarModel class]];
}
そして私が使用したことを確認してください:
[PersonModel modelWithExternalRepresentation:dict];
+[NSValueTransformer mtl_externalRepresentationArrayTransformerWithModelClass:]
は非推奨です。新しいAPIは+[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:]
。
新しいAPIに切り替えた後、モデルは、たとえば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]];
}