在 iphone 和 Apple Watch 之间共享 类
Sharing classes between iphone and the apple watch
我希望有人能对此有所启发。我试过研究但找不到任何东西...
有没有办法在 iPhone 应用程序和 Apple Watch 扩展程序之间共享 class?
假设在手表扩展中我有一个 class myClass
;我无法在 phone 应用程序中使用此 class。无论如何要解决这个问题?
有两种方法可以做到这一点。
使用您的共享代码创建一个框架,然后 link 该框架到您的 WatchKit 扩展和 iPhone 应用程序。这是最干净和推荐的方式。
将 MyClass 的源文件(和依赖项)添加到您的 iPhone 和 WatchKit 扩展目标。
iPhone 应用程序和 Apple Watch 扩展在您的项目中是根本不同的目标。对于每个文件(.h 文件除外),您可以指定要将其包含到哪个目标。
至少有两种方法可以做到这一点。
1) 从顶部菜单 select 查看 -> 实用程序 -> 文件检查器。右侧面板将出现,您应该找到 Target Membership 部分,在您项目的可用目标旁边带有复选框。检查要将此文件包含到的目标。在本例中,iPhone 应用程序和 WatchKit 扩展。
2) 您也可以点击项目进入项目设置。 Select你想要的目标。 (即 iPhone 应用程序或 WatchKit 扩展),单击 Build Phases 选项卡。在 Compile sources 中,您可以单击“+”图标以添加更多文件以构建目标。 (即 myClass.m 在你的情况下)
希望对您有所帮助!
如果您想在 Watch App Extension 的 Swift 代码中从 iPhone 应用分享 Obj-C 类:
包括您希望从 iPhone 应用程序共享的所有 .m 文件,在
WatchKit 扩展应用程序的目标(即在目标成员资格中)。
创建桥接 header(一个新的 .h 文件)文件(通常命名为
[项目名称]-Bridging-Header.h)。您可以选择将其命名为
[projectName]-Watch-Bridging-Header.h(或任何其他
合适)。
- 包含WatchKit包含的.m对应的所有.h文件
扩展目标作为 bridging-header 文件中的导入(例如
#import "MyLogger.h").
- 您可以在 WatchKit Extension App 代码中使用 Obj-C 类
现在。
另一个可能的解决方案(最终解决了我的问题)是确保您的 Watch Target 也知道您的桥接文件所在的位置!
打开您的项目设置和 select 您的 WatchKit 扩展。
在构建设置中,搜索关键字 "bridging"
确保 Objective-C 桥接头文件已设置
我希望有人能对此有所启发。我试过研究但找不到任何东西...
有没有办法在 iPhone 应用程序和 Apple Watch 扩展程序之间共享 class?
假设在手表扩展中我有一个 class myClass
;我无法在 phone 应用程序中使用此 class。无论如何要解决这个问题?
有两种方法可以做到这一点。
使用您的共享代码创建一个框架,然后 link 该框架到您的 WatchKit 扩展和 iPhone 应用程序。这是最干净和推荐的方式。
将 MyClass 的源文件(和依赖项)添加到您的 iPhone 和 WatchKit 扩展目标。
iPhone 应用程序和 Apple Watch 扩展在您的项目中是根本不同的目标。对于每个文件(.h 文件除外),您可以指定要将其包含到哪个目标。
至少有两种方法可以做到这一点。
1) 从顶部菜单 select 查看 -> 实用程序 -> 文件检查器。右侧面板将出现,您应该找到 Target Membership 部分,在您项目的可用目标旁边带有复选框。检查要将此文件包含到的目标。在本例中,iPhone 应用程序和 WatchKit 扩展。
2) 您也可以点击项目进入项目设置。 Select你想要的目标。 (即 iPhone 应用程序或 WatchKit 扩展),单击 Build Phases 选项卡。在 Compile sources 中,您可以单击“+”图标以添加更多文件以构建目标。 (即 myClass.m 在你的情况下)
希望对您有所帮助!
如果您想在 Watch App Extension 的 Swift 代码中从 iPhone 应用分享 Obj-C 类:
包括您希望从 iPhone 应用程序共享的所有 .m 文件,在 WatchKit 扩展应用程序的目标(即在目标成员资格中)。
创建桥接 header(一个新的 .h 文件)文件(通常命名为 [项目名称]-Bridging-Header.h)。您可以选择将其命名为 [projectName]-Watch-Bridging-Header.h(或任何其他 合适)。
- 包含WatchKit包含的.m对应的所有.h文件 扩展目标作为 bridging-header 文件中的导入(例如 #import "MyLogger.h").
- 您可以在 WatchKit Extension App 代码中使用 Obj-C 类 现在。
另一个可能的解决方案(最终解决了我的问题)是确保您的 Watch Target 也知道您的桥接文件所在的位置!
打开您的项目设置和 select 您的 WatchKit 扩展。
在构建设置中,搜索关键字 "bridging"
确保 Objective-C 桥接头文件已设置