我有这个NSUserDefaults
设置代码NSUserDefaults的registerDefaults设置初始BOOL - 做的BOOL价值回归的存在是
NSDictionary *appDefaults = [NSDictionary
dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:@"DidBuyInAppPurchase"];
[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
我检查后,像这样:
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"DidBuyInAppPurchase"] == YES){//some code}
这是否意味着BOOL存在对于密钥还是该密钥设置为YES?
奇怪的是,我写了viewDidLoad
中的代码,将BOOL设置为YES来测试。在此之前,if-statement
没有继续。现在它甚至在我删除将“standardUserDefaults
”设置为“YES”的代码时也会执行此操作。即使我删除应用程序并在设备上构建并运行,代码也会继续。
这将表明if检查将YES与boolean
值是否存在相比较,并且在某种程度上YES也持久保留在应用程序移除中。然而,应用程序的初始运行也应该抓住这一点,因为存在价值。我检查了这个SO question,似乎if检查应该检查YES值,而不是存在值。
这是针对IAP的 - 当用户购买时,boolean
设置为YES以表明它已被购买,如果是,则向用户呈现不同的viewController。如何正确设置此项,以便在检查时将设置为YES执行正确?
编辑:似乎这是在模拟器iOS 8
- 默认情况下没有从应用程序域删除问题。不知道这是iOS 9设备上的情况,还是我错误地使用了NSUserDefaults
。
在设备上没有看到过问题。请注意,此信息最好存储在钥匙串中,而不是用户的默认值... – Wain
有没有关于域的信息?第一个域是易失性的,所以它不应该持续存在,应用程序域应该在删除应用程序时删除它自己。 – noobsmcgoobs
无论它现在总是返回TRUE,都无法弄清楚 – noobsmcgoobs