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

时间:2015-05-08 07:32:41

标签: ios core-data watchkit

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

在扩展程序中,我有一个UITableView,它有一个数据数组。现在它只是在-awakeWithContext期间从共享核心数据中获取该数组。

我想在创建/更新/删除记录时在应用程序和扩展程序之间进行某种通信,以便可以立即在另一端复制它(而不是在下一次查询核心数据时)。

这个问题How to send data from iphone to watchkit in swift进入了iPhone,它有一个处理程序,用于Watch中发生某些事情的时候,但是我更关注它的另一种方式。现在我能想到的就是经常查询核心数据来处理它。

2 个答案:

答案 0 :(得分:3)

一种非常常见的解决方案,其中一种方法是使用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 :(得分:1)

有不同的方式。

  1. 您可以使用MMWormhole
  2. 如果您不想使用第三方库,可以直接使用Darwin通知。 stackoverflow上已经有一个好的tutorial