我的工作与怪物的游戏。每个人都有一个统计列表,这些列表都将是整数。我可以将每个属性设置为自己的变量,但我宁愿将它们保存在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
小号o在我看来很明显,我得到这个问题的原因是我得到的是从objectForKey而不是整数返回的对象。于是,我就做我得到的对象上的intValue方法,但是这给了我另一个错误,具体如下:
Assigning to 'readonly' return result of an objective-c message not allowed
我出于对如何解决这个问题的想法。任何帮助?放弃将它们全部存储在一起并仅为每个属性使用int属性会更好吗?
如果我正在使用ARC,我不必担心保留吗?你也是对的,这看起来有点乏味......也许我会尝试上课。 – CaldwellYSR 2012-07-05 21:22:05
@CaldwellYSR是的,你是对的 - 如果你使用ARC,不需要担心'retain'。 – trojanfoe 2012-07-05 21:25:52
感谢您的建议,我不知道为什么我没有想到让他们成为班级。从长远来看,它会让很多事情变得更容易。 – CaldwellYSR 2012-07-05 21:28:18