我的应用程序正在接受床检,因为用户每次进入应用程序时都必须恢复购买的交易...这让我发疯,因为我的iPhone上没有这个问题。交易完成后,我的应用会调用以下代码:
[self.data setObject:[NSNumber numberWithInt:1] forKey:@"fullBought"];
[self.data synchronize];
而已!然后,应用检查
if([self.data objectForKey:@"fullBought"] != [NSNumber numberWithInt:1)
。我试图删除
[self.data synchronize]
,但我什至无法检查结果,因为我没有这个问题!请帮助我找出问题所在...
最佳答案
NSUserDefaults似乎不是问题。
您将在此指令中将对象与“!=”运算符进行比较:
if([self.data objectForKey:@"fullBought"] != [NSNumber numberWithInt:1)
您应该比较它们的值。使用此运算符,您正在比较内存地址。
您应该做的是:
if([[self.data objectForKey:@"fullBought"] intValue] != 1)
关于ios - NSUserDefault有时不会自行保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25469641/