NSUserDefault更改watchppExtension中的通知处理

我正在创建一个iwatch应用程序,只需在iphone应用程序中单击tableview时显示值。

我想获得关于共享userdefault值更改的通知。 它在watchkitapp和iphone应用程序之间共享,所以当用户对手机进行任何更改时,我必须得到通知。 我做了以下

当用户在手机上执行某些操作时

NSUserDefaults *shared = [[NSUserDefaults alloc] initWithSuiteName:@"group.app"];</br>
id object = [self.plantsArray objectAtIndex:[self.plantsTable indexPathForSelectedRow].row];</br>
[shared setObject:object forKey:@"data"];</br> [shared synchronize];

在watchkit扩展中已经注册了通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(print) name:NSUserDefaultsDidChangeNotification object:nil];

但不幸的是我没有收到任何通知,任何人都知道一些解决方案


我不认为iOS能够在应用程序和扩展程序之间distributed notifications ,但通知不会在两者之间发挥作用,而是需要找到两种方法可以监视更改。 例如文件。

由于您已经创建了group ,因此您可以在组文件夹中保留一个文件并添加扩展名filewatcher ,从app更新文件, filewatcher将捕获更改并完成您的工作。

对于filewatcher在这里看代码。

希望能帮助到你。

干杯。

更新

在这里找到File watcher Swift version 。 感谢@rivera的加入。


你可以试试MMWormHole,它提供:

  • iOS设备和手表之间的通道,使您可以在它们之间来回发送数据。
  • 还提供了一种通知方式,无需自己处理文件监控。
  • 使用它,这将是在你的应用程序中执行通知所需的所有代码

    [self.wormhole passMessageObject:@{@"buttonNumber" : @(1)} identifier:@"button"];
    
    [self.wormhole listenForMessageWithIdentifier:@"button" 
      listener:^(id messageObject) {
        self.numberLabel.text = [messageObject[@"buttonNumber"] stringValue];
    }];
    
    链接地址: http://www.djcxy.com/p/83029.html

    上一篇: NSUserDefault change notification handling in watchppExtension

    下一篇: Inkscape: How to change starting node?