Iphone 如何将UISwitch的状态保存到文件
关于stackoverflow的类似问题产生了以下组合:Iphone 如何将UISwitch的状态保存到文件,iphone,ios,objective-c,ipad,nsuserdefaults,Iphone,Ios,Objective C,Ipad,Nsuserdefaults,关于stackoverflow的类似问题产生了以下组合: NSUserDefaults*userDefaults=[NSUserDefaults standardUserDefaults]; [userDefaults setBool:switchState-forKey:@“mySwitchValueKey”] 及 BOOL swichState=[userDefaults boolForKey:@“mySwitchValueKey”] 我一直在尝试研究NSUserDefaults,但我既不了
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
的实例,然后在standardUserDefaults
中设置应用程序的switchState
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setBool:switchState forKey:@"mySwitchValueKey"];
switchState
必须在该语句上方的任何位置声明为BOOL switchState
从这条语句boolswichstate=[userDefaults boolForKey:@“mySwitchValueKey]”代码>布尔值读回swichState
假设switchState是类的本地属性,则当您更改或翻转或移动到另一个视图时,上述代码应该位于调用的方法中
如果它是全局的或共享的,那么它可以在任何地方,最合适的位置应该是ApplicationHoldTerminate:
- 前两行用于保存数据,因此在任何提交/保存按钮事件中,您都可以使用这两行来保存数据。或者,您可以在每次开关值更改时保存
- 第二行用于检索保存的数据,所以在重新启动应用程序时可以使用它。这样您就可以了解上次发布中保存了哪些数据。根据这一点,你可以继续你的代码
有关更多详细信息,请检查此项,它可能会为您提供有关NSUserDefaults的简要说明
希望这能有所帮助。请查看我问题的编辑,你能告诉我为什么它不起作用吗?@LouisHolley:在设置时,你也应该使用[standardUserDefaults synchronize]代码>在viewDidLoad或iAction中?它说standardUserDefaults是一个未声明的变量在switchValueChanged中,使用[[NSUserDefaults standardUserDefaults]同步]
谢谢你的回答,你能告诉我为什么对我的问题的编辑不起作用吗?-(iAction)switchValueChanged{NSUserDefaults*userDefaults=[NSUserDefaults standardUserDefaults];[userDefaults setBool:.isOn forKey:@“mySwitchValueKey”];尝试这行代码您现在有了所需的结果吗?刚刚登录到stackoverflow。感谢帮助:)它正在工作如果您将nslog(@“%d”,switchState)放入在viewDidLoad中。控制台中未发生任何事件,因此从未调用viewDidLoad?每次在switchValueChanged方法中加载视图时,它都会记录0您使用的setBool:switchState
从何处获取switchState??这是ivar/属性吗?