如何指定子对象与地幔键入一个NSArray(How to specify child objects

2019-08-04 03:32发布

如果我有一本字典一样

{
  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?

Answer 1:

阿想通了。 我需要添加一个私有方法:

+ (NSValueTransformer *)carsTransformer
{
    return [NSValueTransformer mtl_externalRepresentationArrayTransformerWithModelClass:[CarModel class]];
}

并确保我使用:

[PersonModel modelWithExternalRepresentation:dict];


Answer 2:

+[NSValueTransformer mtl_externalRepresentationArrayTransformerWithModelClass:]已被弃用。 新的API +[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:]

切换到新的API后,该模型可以通过,例如,提供的缺省初始化进行初始化MTLJSONAdapter



Answer 3:

上的注意事项:

[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:CarModel.class];

这种方法似乎现在已过时。 我用我的代码这种新方法,它似乎工作得很好:

[MTLJSONAdapter arrayTransformerWithModelClass:CarModel.class];


Answer 4:

+ (NSValueTransformer *)carsJSONTransformer {
    return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:CarModel.class];
}

阅读更多在这里



Answer 5:

+[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:]

此方法已被弃用。 新方法是:

  + (NSValueTransformer *)carsTransformer
    {
        return [MTLJSONAdapter arrayTransformerWithModelClass:[CarsModel class]];
    }


文章来源: How to specify child objects type in an NSArray with Mantle