![](/img/trans.png)
[英]iOS NSUserDefaults not working if upgrade the app from ios 9 to ios 10
[英]NSUserdefaults are not working correctly in iOS app
我有一個顯示設置頁面一次的應用程序! 這是第一次從應用商店下載。 之后,它將僅進入主頁。
但是,當您雙擊iPhone按鈕並刪除該應用程序時,當您輕掃該應用程序時,它將返回到設置頁面。
這是我的應用程序中的一些代碼
didfinishwithOptions
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"SettingsShown"])
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"SettingsShown"];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"ShowBackButton"];
[[NSUserDefaults standardUserDefaults] synchronize];
self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"SettingsViewController"];
}
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"SettingsShown"] == NO)
{
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"SettingsShown"];
}
然后我把
- (void)applicationWillTerminate:(UIApplication *)application
{
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"SettingsShown"];
NSLog(@"Application is terminated");
}
當您雙擊iPhone按鈕時,當您滑動應用程序時,它應該會運行。 但未將用戶默認設置設為0,因為它再次從didfinishwithoptions運行設置頁面。 有人可以建議嗎?
放入NSUserDefaults
任何值都不必立即寫入。 例如,如果您的應用程序以某種異常方式終止,則不能保證將寫入數據。
您可以使用同步來強制系統寫入NSUserDefaults
:
[[NSUserDefaults standardUserDefaults] synchronize]
從文檔中 :
將對永久域的任何修改寫入磁盤,並將所有未修改的永久域更新為磁盤上的內容。 因為此方法是定期自動調用的,所以僅當您無法等待自動同步時(例如,如果您的應用程序將要退出),或者您想要將用戶默認值更新為磁盤上的默認值時,才使用此方法。您尚未進行任何更改。
這樣做會有輕微的性能損失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.