NSUserDefaults 将变量从一个视图传递到另一个视图

NSUserDefaults Passing Variable from one view to the other

我正在尝试将一个变量(可能最终会成为 bool 或 int,我只想指示 UISwitch 的状态)从一个视图传递到另一个视图。我已经调查过了,看起来最好的方法是 NSUserDefaults。但是,每次我尝试解决方案时,应用程序似乎都会崩溃。这是我在 .m 文件中所做的:

  1. 右键单击-将开关拖到@interface 和@end 之间的space 并创建一个插座

    @property (weak, nonatomic) IBOutlet UISwitch *officer1;

  2. 右击-将开关拖到@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"];