使用 SharedData 在 iPhone 和 Watch 之间传递更新

Communicating Updates between iPhone and Watch with SharedData

我有一个共享的核心数据支持我的 iPhone 应用程序和 WatchKit 扩展。它们都独立运行良好,但我担心并发使用。

在扩展中,我有一个 UITableView,它有一个数据数组。现在它只是在 -awakeWithContext.

期间从共享核心数据中获取该数组

当记录为 created/updated/deleted 时,我想在应用程序和扩展程序之间进行某种通信,以便它可以立即在另一端复制(而不是在对 Core Data 的下一个查询中)。

这个问题 涉及到 iPhone 有一个处理程序来处理 Watch 中发生的事情,但我更担心它会以另一种方式出现。现在我能想到的就是经常查询核心数据来处理它。

一个非常常见的解决方案,也是唯一的方法之一是使用 MMWormhole

MMWormhole 使用 CFNotificationCenter 在应用程序和扩展程序之间即时传达更改,通过共享应用程序组传递信息。

MMWormhole GitHub README 传递数据的示例:

// Sender (Watch Extension)
[self.wormhole passMessageObject:@{@"buttonNumber" : @(1)} identifier:@"button"];

// Receiver (Phone)
[self.wormhole listenForMessageWithIdentifier:@"button" 
  listener:^(id messageObject) {
    self.numberLabel.text = [messageObject[@"buttonNumber"] stringValue];
}];

有不同的方法。

  1. 您可以使用MMWormhole
  2. 如果您不喜欢使用第三方库,您可以直接使用达尔文通知。 Whosebug 上已经有一个很好的