NSDictionary With Integer Values

Ich arbeite an einem Spiel mit Monstern. Jeder hat eine Liste von Statistiken, die alle ints sein werden. Ich kann jede Statistik als eigene Variable einrichten, aber ich würde es vorziehen, sie in einem NSDictionary zu behalten, da sie alle verwandt sind. Ich habe ein Problem, wenn ich versuche, die Werte der einzelnen Werte zu ändern.

Was ich habe:

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

Was ich machen will; was ich vorhabe zu tun

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

Fehler, den ich erhalte

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

Aus diesem Grund sehe ich das Problem offensichtlich darin, dass von objectForKey anstelle einer Ganzzahl ein Objekt zurückgegeben wird. Also habe ich versucht, die intValue-Methode für das Objekt auszuführen, das ich erhalte, aber das hat mir einen weiteren Fehler beschert, insbesondere:

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

Ich habe keine Ideen, wie ich das beheben kann. Irgendeine Hilfe? Wäre es besser, die Idee aufzugeben, sie alle zusammen zu speichern und einfach eine int-Eigenschaft für jede Statistik zu verwenden?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage