0

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

2 回答 2

1

这两个语句用于创建一个实例,NSUserDefaults然后设置switchStatein standardUserDefaults,即与您的应用程序一起使用。

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

switchState必须在此语句上方的任何位置声明为BOOL switchState.

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

上面的代码应该在当你改变或翻转或移动到另一个视图时调用的方法中,假设 switchState 是一个类的本地属性。

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

于 2013-03-03T16:22:05.023 回答
0
  • 前两行用于保存数据,因此在任何提交/保存按钮事件中,您都可以使用此行来保存数据。否则,您可以在每次开关值更改时保存。
  • 第二行用于检索您保存的数据,因此您可以在重新启动应用程序时使用它。这样您就可以了解上次启动时保存了哪些数据。据此,您可以继续编写代码。

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

希望这可以帮助。

于 2013-03-03T16:24:28.303 回答