How to set default value in iOS Mantle model subclass

github-mantle, ios, objective-c

Solution

Whether you create a Mantle model from JSON or otherwise, the model is initialised with `[-initWithDictionary:error:]`. In your model class, you can add your defaults to the values used to initialise the model:

- (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];
}

Problem

``` @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 ``` Since mantle examples doesn't have a init method, where should I initialize those properties (searchTotalPagesAll, searchTotalPagesIdeas) for default values ? This model has internal methods that need this and several other properties.

Original source