In my project, I have achievements from the main GameClass trying to save data into an NSMutableArray in the control class, ViewController (which is GameClass’s delegate), but the array’s values don’t seem to change. Here’s my code:
In GameClass.m
NSLog(@"test %i",[delegate getAchievement:3]);
[delegate setAchievement:3];
NSLog(@"test %i",[delegate getAchievement:3]);
In ViewController.m
-(void)setAchievement: (int)number{
[achievements replaceObjectAtIndex: number withObject: [[NSNumber alloc] initWithInt:1]];
NSLog(@"setachievement was called");
[self saveData];
}
-(int)getAchievement: (int)number{
return [[achievements objectAtIndex: number] intValue];
}
And what I get is:
2012-11-25 20:47:14.754 Stickman Parkour 2[25109:c07] test 0
2012-11-25 20:47:14.755 Stickman Parkour 2[25109:c07] setachievement was called
2012-11-25 20:47:14.755 Stickman Parkour 2[25109:c07] test 0
Either delegate is nil or achievements is nil. A call to nil returns zero/nil. (But since “set achievement was called” appears, that suggests that delegate is OK and achievements is what’s nil.)