我将在游戏中为额外的生命设置IAP,但在此之前,我想测试是否会从我的购买View Controller转移到我的游戏View Controller而它不是。在我的购买VC中我有
-(void)StartView{
//Life = [[NSUserDefaults standardUserDefaults] integerForKey:@"Life"]; (If in the code then it will not update the LifeCounter.text)
livesUpdated = [NSTimer scheduledTimerWithTimeInterval:0.0001 target:self selector:@selector(LiveUpdatedCheck) userInfo:nil repeats:YES];
}
-(void)LiveUpdatedCheck{
LifeCounter.text = [NSString stringWithFormat:@"%li", (long)Life];
}
-(void)LiveUpdatedCheck{
LifeCounter.text = [NSString stringWithFormat:@"%li", (long)Life];
}
-(IBAction)TenLifePurchase:(id)sender{
Life = Life + 10;
}
然后在我的游戏VC中我有
-(IBAction)StartGame:(id)sender{
Life = [[NSUserDefaults standardUserDefaults] integerForKey:@"Life"];
LifeCounter.text = [NSString stringWithFormat:@"%li", (long)Life];
}
'生命'在我的两个.h文件中声明为NSInteger,我使用userDefaults就像这样在两个视图控制器之间移动我的高分,并通过id整数改变球的颜色。我该如何解决这个问题?可能是因为在我的购买控制器和我的游戏控制器之间你必须通过一个没有生命信息的主屏幕?此外,当您在查看游戏控制器后返回购买的控制器时,它会从任何数字重置为0,但如果您查看任何其他控制器然后返回购买,则该数字将存储而不会重置为0。
答案 0 :(得分:1)
您实际上并未将价值保存在任何地方。您只是在两次查询值而不是保存它。以下是如何保存:
[[NSUserDefaults standardUserDefaults] setObject:yourIntegerValue
forKey:@"Life"];
[[NSUserDefaults standardUserDefaults] synchronize];
请注意,您必须调用synchronize方法才能将其导入数据库。希望有所帮助!
答案 1 :(得分:-1)
您可能希望将全局数据移动到单例类,将其限制在视图控制器中,然后尝试从另一个地方访问它并不是一个好主意。你必须以某种方式保存数据(最好是用Dylan的方法)。