簡體   English   中英

如何將UISwitch的狀態保存到文件

[英]How to save the state of a UISwitch to file

關於stackoverflow的類似問題產生了以下組合:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; [userDefaults setBool:switchState forKey:@"mySwitchValueKey"];

BOOL swichState = [userDefaults boolForKey:@"mySwitchValueKey"];

我一直在嘗試研究NSUserDefaults,但我既不了解這些代碼的用途,也不了解它們在程序中的位置。


誰能告訴我他們要去哪里? 為什么下面的代碼不起作用?

- (void)viewDidLoad
{
    [super viewDidLoad];
    BOOL switchState = [[NSUserDefaults standardUserDefaults]  boolForKey:@"mySwitchValueKey"];
    if (switchState == YES) {
        [hard1ON setOn:TRUE];
    } else {
        [hard1ON setOn:FALSE];
    }
}

- (IBAction)switchValueChanged
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setBool:switchState forKey:@"mySwitchValueKey"];

    if (hard1ON.on) {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"theChange" object:nil];
    } else {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"theChange2" object:nil];
    }
}

這兩個語句用於創建一個實例NSUserDefaults ,然后設置switchStatestandardUserDefaults ,與您的應用程序。

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setBool:switchState forKey:@"mySwitchValueKey"];

switchState必須在此聲明與上述任何地方宣布BOOL switchState

從該語句中BOOL swichState = [userDefaults boolForKey:@"mySwitchValueKey"]; boolValue被讀回到swichState。

假設switchState是類的本地屬性,則以上代碼應在更改,翻轉或移動到另一個視圖時調用的方法中。

如果它是全局的或共享的,則可以在任何地方,最合適的地方是applicationSholdTerminate:

  • 前兩行用於保存數據,因此在任何“提交/保存”按鈕事件中,您都可以使用此行來保存數據。 否則,每次開關值更改時,您都可以保存。
  • 第二行用於檢索保存的數據,因此可以在重新啟動應用程序時使用它。 這樣一來,您就可以知道上次啟動時保存了哪些數據。 並據此可以繼續編寫代碼。

有關更多詳細信息,請檢查此鏈接 ,它可能為您提供有關NSUserDefaults的簡短描述。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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