7
@interface Entity ()
  @property (assign) int searchTotalPagesAll;
  @property (assign) int searchTotalPagesIdeas;
@end


@implementation Entity
  + (NSDictionary *)JSONKeyPathsByPropertyKey {
return @{
         @"Id": @"entity.id_entity",
         @"name": @"entity.name",
         @"coverage" : @"entity.coverage",
         @"id_city": @"entity.Id_City",
         @"cityName":@"entity.city",
         @"countryName":@"entity.country",
         @"stateName":@"entity.district",
         @"countryCode": @"entity.countrycode",
         @"keyword1": @"entity.key1",
      ... etc

由于地幔示例没有 init 方法,我应该在哪里初始化这些属性(searchTotalPagesAll、searchTotalPagesIdeas)的默认值?此模型具有需要此属性和其他几个属性的内部方法。

4

2 回答 2

13

无论您是从 JSON 还是其他方式创建 Mantle 模型,模型都会使用[-initWithDictionary:error:]. 在您的模型类中,您可以将默认值添加到用于初始化模型的值中:

- (instancetype)initWithDictionary:(NSDictionary *)dictionaryValue error:(NSError *__autoreleasing *)error {
    NSDictionary *defaults = @{
        @"searchTotalPagesAll" : @(10),
        @"searchTotalPagesIdeas" : @(5)
    };
    dictionaryValue = [defaults mtl_dictionaryByAddingEntriesFromDictionary:dictionaryValue];
    return [super initWithDictionary:dictionaryValue error:error];
}
于 2014-04-23T13:00:58.363 回答
9

您可以在 init 方法中设置默认值。

- (instancetype)init
{
    self = [super init];
    if (self) {
        self.searchTotalPagesAll = 1;
        self.searchTotalPagesIdeas = 2;
    }
    return self;
}
于 2014-10-15T11:10:10.657 回答