Tôi đang làm việc với trò chơi có quái vật. Mỗi người có một danh sách các số liệu thống kê tất cả sẽ được ints. Tôi có thể thiết lập mỗi stat như biến riêng của nó nhưng tôi muốn giữ chúng trong một NSDictionary vì chúng đều liên quan. Tôi đang gặp sự cố khi tôi cố gắng thay đổi giá trị của từng chỉ số.NSDictionary Với Giá trị Số nguyên
Những gì tôi có:
-(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;
}
Những gì tôi muốn làm
-(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);
}
Lỗi Tôi Bắt
Arithmetic on pointer to interface 'id', which is not a constant size in non-fragile ABI
S o có vẻ như rõ ràng với tôi rằng lý do tôi nhận được vấn đề là tôi nhận được một đối tượng được trả về từ objectForKey thay vì một số nguyên. Vì vậy, tôi đã cố gắng để làm phương pháp intValue trên đối tượng tôi nhận được nhưng điều đó đã cho tôi một lỗi khác, cụ thể là:
Assigning to 'readonly' return result of an objective-c message not allowed
Tôi hết ý tưởng để khắc phục điều này. Bất kỳ giúp đỡ? Nó sẽ là tốt hơn để chỉ cần từ bỏ ý tưởng để lưu trữ tất cả chúng lại với nhau và chỉ sử dụng một tài sản int cho mỗi stat?
Tôi không phải lo lắng về việc giữ lại nếu tôi đang sử dụng ARC phải không? Ngoài ra, bạn đang phải này trông hơi tẻ nhạt ... có lẽ tôi sẽ thử một lớp học thay thế. – CaldwellYSR
@CaldwellYSR Vâng, bạn nói đúng - không cần phải lo lắng về việc "giữ lại" nếu bạn đang sử dụng ARC. – trojanfoe
Cảm ơn lời khuyên, tôi không biết tại sao tôi không nghĩ đến việc làm cho họ thành một lớp học. Nó sẽ làm cho rất nhiều thứ dễ dàng hơn trong thời gian dài. – CaldwellYSR