如何将UISwitch的状态保存到文件

时间:2013-03-03 16:15:09

标签: iphone ios objective-c ipad nsuserdefaults

关于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];
    }
}

2 个答案:

答案 0 :(得分:1)

这两个语句用于创建NSUserDefaults的实例,然后在switchState中设置standardUserDefaults,即使用您的应用。

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

switchState必须在此声明之上的任何位置声明为BOOL switchState

从这句话BOOL swichState = [userDefaults boolForKey:@"mySwitchValueKey"];中,boolValue被读回swichState。

上面的代码应该在您更改或翻转或移动到其他视图时调用的方法中,假设switchState是类的本地属性。

如果它是全局的或共享的,那么它可以是任何地方,最合适的地方是applicationSholdTerminate:

答案 1 :(得分:0)

  • 前两行用于保存数据,因此在任何提交/保存按钮事件中,您都可以使用此行保存数据。否则,您可以在每次切换值更改时保存。
  • 第二行用于检索已保存的数据,因此您可以在重新启动应用程序时使用此行。这样您就可以了解上次启动时保存了哪些数据。根据你的说法,你可以继续使用你的代码。

有关详细信息,请查看此link,它可能会为您提供有关NSUserDefaults的简要说明。

希望这有帮助。