在iphone和Apple手表之间共享课程

时间:2015-02-04 23:26:51

标签: swift watchkit

我希望有人可以对此有所了解。我尝试过研究,却找不到任何东西......

有没有办法在iPhone应用程序和Apple Watch扩展程序之间共享一个类?

让我们在手表扩展中说我有一个班级myClass;我无法在手机应用程序中使用此类。反正有没有绕过这个?

4 个答案:

答案 0 :(得分:37)

iPhone应用程序和Apple Watch扩展程序是您项目中基本不同的目标。对于每个文件(.h文件除外),您可以指定要将其包含到的目标。

至少有两种方法可以做到这一点。

1)从顶部菜单中选择查看 - >实用程序 - >文件检查器。右侧面板将显示,您应该找到目标成员部分,并在项目的可用目标旁边显示复选框。检查要包含此文件的目标。在这种情况下,iPhone应用程序和WatchKit扩展。

2)您也可以点击项目转到项目设置选择您想要的目标。 (即iPhone应用程序或WatchKit扩展程序),单击构建阶段选项卡。在编译源中,您可以点击" + "图标,添加更多要为目标构建的文件。 (即你的情况下是myClass.m)

希望这有帮助!

答案 1 :(得分:6)

另一种可能的解决方案(最终解决了我的问题)是确保您的 Watch Target 也知道您的桥接文件所在的位置!

  • 打开项目设置并选择WatchKit扩展程序。

  • 在构建设置中,搜索关键字“桥接”

  • 确保已设置Objective-C桥接头文件 enter image description here

答案 2 :(得分:3)

有两种方法可以做到这一点。

  1. 使用您的共享代码创建一个框架,并将该框架链接到您的WatchKit扩展程序和您的iPhone应用程序。这是最干净和推荐的方式。

  2. 将MyClass的源文件(和依赖项)添加到iPhone和WatchKit扩展目标。

答案 3 :(得分:1)

如果您希望在Watch App Extension中的Swift代码中从iPhone应用程序共享Obj-C类:

  1. 包含您希望从iPhone应用中分享的所有.m文件 WatchKit Extension应用程序的目标(即目标成员资格)。

  2. 创建桥接头(新的.h文件)文件(通常命名为     [项目] -Bridging-Header.h)。您可以选择将其命名为     [projectName] -Watch-Bridging-Header.h(或其他任何东西     合适的)。

  3. 包含与WatchKit中包含的.m相对应的所有.h文件 扩展目标作为桥接头文件中的导入(例如 #import" MyLogger.h")。
  4. 您已准备好在WatchKit Extension App代码中使用Obj-C类 现在