关于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];
}
}
答案 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的简要说明。
希望这有帮助。