【发布时间】:2012-07-06 08:08:06
【问题描述】:
我正在开发一个有怪物的游戏。每个都有一个统计数据列表,这些统计数据都将是整数。我可以将每个统计信息设置为它自己的变量,但我更愿意将它们保存在 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 属性的想法会更好吗?
【问题讨论】:
标签: objective-c int nsdictionary