我有這個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