我一直在尝试为UISwitch
文件中的多个交换机保存grocery.m
状态,因此当用户终止应用时,交换机的状态将保持不变。这就是我到目前为止所做的一切,但没有任何运气。我认为问题必须在我的grocery.m
文件中,而不是appDelegate.m
。如果有人能告诉我我的错误在哪里,我们将不胜感激。谢谢!
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
push.switchstore1.on = [defaults boolForKey: @"mySwitch1"];
push.switchstore2.on = [defaults boolForKey: @"mySwitch2"];
push.switchstore3.on = [defaults boolForKey: @"mySwitch3"];
UIApplication *app = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillTerminate:) name:UIApplicationWillTerminateNotification object:app]; //Listener
}
- (void)applicationWillTerminate:(UIApplication *)application {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool: push.store1.on forKey: @"mySwitch1"];
[defaults setBool: push.store2.on forKey: @"mySwitch2"];
[defaults setBool: push.store3.on forKey: @"mySwitch3"];
[[NSUserDefaults standardUserDefaults] synchronize];
[self saveContext]; //Already in the method by default
}
WITHIN GROCERY.M
-(void) viewDidLoad
{
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
switchStore1.on = [defaults boolForKey: @"mySwitch1"];
switchStore2.on = [defaults boolForKey: @"mySwitch2"];
switchStore3.on = [defaults boolForKey: @"mySwitch3"];
}
编辑已添加到delegate.h的内容(属性也已在.m中合成)
groceryViewController *push;
@property (nonatomic, retain) groceryViewController *push;
答案 0 :(得分:0)
在您的applicationWillTerminate中,您将启动一个全新的groceryViewController,它始终具有交换机的默认“关闭”值。您需要使用在应用程序的didFinishLaunchingWithOptions中实例化的相同groceryViewController。有多种方法可以做到这一点,包括使用全局变量或使用AppDelegate中的属性。
答案 1 :(得分:0)
您始终在创建groceryViewController
的新实例,因此不会引用您想要捕获信息的相同内存位置。