我为通知中心创建了一个应用扩展程序,除了我无法连续更新UILabel
之外,它实际上工作正常。我需要这样做的原因是因为我的应用程序有一个不断变化的数据集,我想在扩展中显示。
我尝试使用NSUserDefaultsDidChangeNotification
来更新扩展程序中的数据,但它无效。这是我的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
...
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(userDefaultsDidChange:)
name:NSUserDefaultsDidChangeNotification
object:nil];
}
- (void)userDefaultsDidChange:(NSNotification *)notification
{
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.company.app"];
//update label
}
- (void)updateData
{
NSUserDefaults *sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.company.app"];
[sharedDefaults setInteger:seconds forKey:@"seconds"];
...
[sharedDefaults synchronize];
}
我在主应用程序和扩展程序中正确设置了应用程序组,这些应用程序组都访问了同一组。
有人知道为什么这不起作用或者是否有其他方法可以做到这一点? 非常感谢!
答案 0 :(得分:2)
我在我的WatchKit应用中遇到了同样的问题,NSUserDefaultsDidChangeNotification
确实不在共享NSUserDefaults
的扩展名中被触发。
我发现的最佳解决方案是一个名为MMWormhole的库
CFNotificationCenter Darwin Notifications
实现这一目标。