我有以下问题:
我创建了一个 Today Extension,其中包含一个UISwitch
. NSUserDefaults
Today Extension 中此开关的 IBAction 应使用initWithSuite存储开启状态,如下所示:
- (IBAction)switchStateChanged:(id)sender {
BOOL isOn = self.preferenceSwitch.isOn;
NSUserDefaults *sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.x.TodayExtensionSharingDefaults"];
[sharedDefaults setBool: isOn forKey: @"SwitchState"];
[sharedDefaults synchronize];
}
现在在我的包含应用程序中,我知道我可以使用以下方法访问开关状态:
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.x.TodayExtensionSharingDefaults"];
BOOL value = [defaults boolForKey:@"SwitchState"];
我正在寻找一种解决方案,当开关的值发生更改时,它会在我的主包含应用程序中给我一个回调。
在这个解决方案中,我必须设置一个NSTimer
例如每 200 毫秒刷新一次用户默认值。
通过将观察者添加到 sharedDefaults 是否有任何解决方案?