不断更新应用扩展程序

时间:2014-10-01 18:24:00

标签: ios xcode6 nsuserdefaults ios-app-extension

我为通知中心创建了一个应用扩展程序,除了我无法连续更新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];
}

我在主应用程序和扩展程序中正确设置了应用程序组,这些应用程序组都访问了同一组。

有人知道为什么这不起作用或者是否有其他方法可以做到这一点? 非常感谢!

1 个答案:

答案 0 :(得分:2)

我在我的WatchKit应用中遇到了同样的问题,NSUserDefaultsDidChangeNotification确实在共享NSUserDefaults的扩展名中被触发。

我发现的最佳解决方案是一个名为MMWormhole的库 CFNotificationCenter Darwin Notifications实现这一目标。