我希望有人可以对此有所了解。我尝试过研究,却找不到任何东西......
有没有办法在iPhone应用程序和Apple Watch扩展程序之间共享一个类?
让我们在手表扩展中说我有一个班级myClass
;我无法在手机应用程序中使用此类。反正有没有绕过这个?
答案 0 :(得分:37)
iPhone应用程序和Apple Watch扩展程序是您项目中基本不同的目标。对于每个文件(.h文件除外),您可以指定要将其包含到的目标。
至少有两种方法可以做到这一点。
1)从顶部菜单中选择查看 - >实用程序 - >文件检查器。右侧面板将显示,您应该找到目标成员部分,并在项目的可用目标旁边显示复选框。检查要包含此文件的目标。在这种情况下,iPhone应用程序和WatchKit扩展。
2)您也可以点击项目转到项目设置。 选择您想要的目标。 (即iPhone应用程序或WatchKit扩展程序),单击构建阶段选项卡。在编译源中,您可以点击" + "图标,添加更多要为目标构建的文件。 (即你的情况下是myClass.m)
希望这有帮助!
答案 1 :(得分:6)
另一种可能的解决方案(最终解决了我的问题)是确保您的 Watch Target 也知道您的桥接文件所在的位置!
答案 2 :(得分:3)
有两种方法可以做到这一点。
使用您的共享代码创建一个框架,并将该框架链接到您的WatchKit扩展程序和您的iPhone应用程序。这是最干净和推荐的方式。
将MyClass的源文件(和依赖项)添加到iPhone和WatchKit扩展目标。
答案 3 :(得分:1)
如果您希望在Watch App Extension中的Swift代码中从iPhone应用程序共享Obj-C类:
包含您希望从iPhone应用中分享的所有.m文件 WatchKit Extension应用程序的目标(即目标成员资格)。
创建桥接头(新的.h文件)文件(通常命名为 [项目] -Bridging-Header.h)。您可以选择将其命名为 [projectName] -Watch-Bridging-Header.h(或其他任何东西 合适的)。