簡體   English   中英

NSUserdefaults在iOS應用中無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM