私はモンスターとのゲームに取り組んでいます。それぞれに、すべて int になる統計のリストがあります。各統計を独自の変数として設定できますが、それらはすべて関連しているため、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 プロパティを使用するだけの方がよいでしょうか?