27

如果我有一本像

{
  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

如何使用 Mantle 以使我的人物模型中的汽车阵列成为 CarModels?

4

5 回答 5

21

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

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

并确保我使用了:

[PersonModel modelWithExternalRepresentation:dict];
于 2012-12-14T18:45:28.900 回答
13

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

切换到新的 API 后,模型可以使用提供的默认初始化程序进行初始化,例如MTLJSONAdapter.

于 2013-07-24T08:59:46.533 回答
12

关于:

[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:CarModel.class];

这种方法现在似乎已被弃用。我在我的代码中使用了这个新方法,它似乎工作得很好:

[MTLJSONAdapter arrayTransformerWithModelClass:CarModel.class];
于 2015-06-09T14:33:13.267 回答
4
+ (NSValueTransformer *)carsJSONTransformer {
    return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:CarModel.class];
}

在这里阅读更多

于 2014-04-22T08:35:15.163 回答
0
+[NSValueTransformer mtl_JSONArrayTransformerWithModelClass:]

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

  + (NSValueTransformer *)carsTransformer
    {
        return [MTLJSONAdapter arrayTransformerWithModelClass:[CarsModel class]];
    }
于 2016-12-02T09:36:34.663 回答