从iOS应用程序发送字典到WatchKit - watchOS2

时间:2016-04-17 21:52:09

标签: ios swift watchkit watch-os-2 sendmessage

我的目标是在启动watchKit应用程序之前从iOS应用程序向watchKit发送字典。我使用交互式短信(sendMessage)快速传输字典。

问题是 - 在MainViewController内创建字典。如果我声明WCSession并在MainViewController内激活它,我可以将数据传输到模拟器上的watchKit,没有任何问题。但是当我在真实设备上测试该过程时 - iOS应用程序永远不会被调用。

在后台唤醒应用程序是通过声明并激活WCSession中的AppDelegate来完成的,但是还有另一个阻止程序 - 我无法创建字典 - 因为它创建了多个变量在MainViewController内声明。

我尝试了第三种方法 - 将WCSession包装在一个单独的(suggested由机器人Natasha中)。这个框架的唯一缺点是交互式消息传递永远不会起作用,并且还没有经过娜塔莎本人的测试。

所以我很困惑 - 我该如何将字典发送到watchKit?

感谢您的任何见解

2 个答案:

答案 0 :(得分:0)

您需要找到一种方法来获取在MainViewController之外创建的字典。也许您可以在控制器中编写一个类方法来创建并返回字典,以便可以从AppDelegateMainViewController使用它。

答案 1 :(得分:0)

您应该使用数据存储来保存字典,然后根据主视图控制器传递给它的变量创建数据。

一旦发生这种情况,您可以使用WCSession管理器传输数据存储的字典。

我知道娜塔莎在她的教程中涵盖了这些方面。如果你有特定问题如何做到这一点,你真的需要发布显示你尝试过的代码,以及对什么不起作用的描述。

如果手表要求提供数据,但尚未创建,则需要返回“暂无数据”回复,以便手表可以显示一条消息,告诉用户打开应用并设置视图控制器用于创建数据的变量。

将责任分离并封装到这些不同的组件中确实更好。视图控制器不需要包含与创建或传输字典相关的任何代码。

说了这么多......

  

我无法创建字典 - 因为它的创建的多个变量是在MainViewController

中声明的

这听起来像here。你一直专注于“发送”你必须创建的大型数组字典的问题,当你可能有一种更简单的方法来完成你实际上想要用这个大字典做的事情。

首先,我想知道为什么你要把那个巨大的计算数据集发送到手表上,以便它做一些事情,而不是在手机端处理那个计算,然后发送一小组“结果” ”

也许您应该在手表上描述您想要解决的真正的Y问题,而不是要求我们提供可能最终不必要的X解决方案。