NSDictionary с целыми значениями

Я работаю над игрой с монстрами. У каждого есть список характеристик, которые все будут целыми. Я могу настроить каждую статистику как собственную переменную, но я бы предпочел сохранить их в NSDictionary, поскольку все они связаны. У меня возникла проблема, когда я пытаюсь изменить значение каждой характеристики.

Что у меня есть:

-(id) init {
    self = [super init];
    if(self) {
        stats = [NSDictionary dictionaryWithObjectsAndKeys:
              @"Attack",  0,
              @"Defense", 0,
              @"Special Attack", 0,
              @"Special Defense", 0,
              @"HP", 0, nil];
    }
    return self;
}

Что я хочу сделать

-(void) levelUp {
    self.level++;
    [self.stats objectForKey:@"Attack"] += (level * 5);
    [self.stats objectForKey:@"Defense"] += (level * 5);
    [self.stats objectForKey:@"Special Attack"] += (level * 5);
    [self.stats objectForKey:@"Special Defense"] += (level * 5);
    [self.stats objectForKey:@"HP"] += (level * 5);
}

Ошибка, которую я получаю

Arithmetic on pointer to interface 'id', which is not a constant size in non-fragile ABI

Поэтому мне кажется очевидным, что причина, по которой у меня возникает проблема, заключается в том, что я получаю объект, возвращаемый из objectForKey, вместо целого числа. Итак, я попытался выполнить метод intValue для объекта, который я получаю, но это дало мне еще одну ошибку, а именно:

Assigning to 'readonly' return result of an objective-c message not allowed

У меня нет идей, как это исправить. Любая помощь? Не лучше ли просто отказаться от идеи хранить их все вместе и просто использовать свойство int для каждой характеристики?

19
задан CaldwellYSR 5 July 2012 в 20:58
поделиться