次の問題があります。
を含む Today Extension を作成しましたUISwitch
。Today Extension のこのスイッチの IBAction はNSUserDefaults
、次のように 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 に追加することによる解決策はありますか?