NSUserDefaults 将变量从一个视图传递到另一个视图
NSUserDefaults Passing Variable from one view to the other
我正在尝试将一个变量(可能最终会成为 bool 或 int,我只想指示 UISwitch 的状态)从一个视图传递到另一个视图。我已经调查过了,看起来最好的方法是 NSUserDefaults。但是,每次我尝试解决方案时,应用程序似乎都会崩溃。这是我在 .m 文件中所做的:
右键单击-将开关拖到@interface 和@end 之间的space 并创建一个插座
@property (weak, nonatomic) IBOutlet UISwitch *officer1;
右击-将开关拖到@implementation 和@end 之间的space 并创建一个动作
- (IBAction)officer1Flipped:(id)sender {
[[NSUserDefaults standardUserDefaults] setObject:_officer1 forKey:@"officer1"];
}
但现在每当我按下那个开关时它就会崩溃。知道我做错了什么吗?我是不是忘了添加任何内容?
不是将整个 UISwitch 对象保存到用户默认值,而是保存当前打开状态 (BOOL) officer1.isOn
- (IBAction)officer1Flipped:(id)sender {
[[NSUserDefaults standardUserDefaults] setBool:_officer1.isOn forKey:@"officer1"];
}
然后要读取该值,请调用
[[NSUserDefaults standardUserDefaults] boolForKey:@"officer1"];
我正在尝试将一个变量(可能最终会成为 bool 或 int,我只想指示 UISwitch 的状态)从一个视图传递到另一个视图。我已经调查过了,看起来最好的方法是 NSUserDefaults。但是,每次我尝试解决方案时,应用程序似乎都会崩溃。这是我在 .m 文件中所做的:
右键单击-将开关拖到@interface 和@end 之间的space 并创建一个插座
@property (weak, nonatomic) IBOutlet UISwitch *officer1;
右击-将开关拖到@implementation 和@end 之间的space 并创建一个动作
- (IBAction)officer1Flipped:(id)sender { [[NSUserDefaults standardUserDefaults] setObject:_officer1 forKey:@"officer1"]; }
但现在每当我按下那个开关时它就会崩溃。知道我做错了什么吗?我是不是忘了添加任何内容?
不是将整个 UISwitch 对象保存到用户默认值,而是保存当前打开状态 (BOOL) officer1.isOn
- (IBAction)officer1Flipped:(id)sender {
[[NSUserDefaults standardUserDefaults] setBool:_officer1.isOn forKey:@"officer1"];
}
然后要读取该值,请调用
[[NSUserDefaults standardUserDefaults] boolForKey:@"officer1"];