我有一个包含多个目标的项目。主要目标是 Swift 和 Objective-C 类以及 objc 文件的组合,它们通过包含 ModuleName-Swift.h 伞头来使用 Swift 类。但是,当我将相同的源文件包含到多个目标时,除了主要目标之外,无法找到伞头。每个目标的 header 导入中的模块名称应该不同。我如何实现这一目标?
更新:
到目前为止,除了为所有目标设置相同的产品模块名称外,我还没有找到任何其他方法。这似乎没有任何副作用。
最佳答案
我在为我的应用程序编写 Today Extension 时遇到了同样的问题。 我有一个名为 Items.swift 的文件,位于 Today 扩展组件中,并且 包含在该目标中。所以我有以下情况: 主要项目完全用 Objective-C 编写 Today 扩展是用 Swift 编写的
问题:
我想将文件 Items.swift 包含到主项目中并使用它
解决方案:
- 确保
Items.swift
包含在主应用目标中 - 重要 (!!!) 您应该创建
"ProductModuleName"-Bridging-Header.h
并在项目文件(Objective-C Bridging Header)中添加对此文件的引用选项)即使你的 主要目标只包含 Objective-C 代码 - 你的
Items.swift
应该继承自 NSObject 或其后代 - 然后将
#import "ProductModuleName-Swift.h"
添加到您想要的位置 使用Items.swift
并按下 Build
最后,您可以转到 "ProductModuleName-Swift.h"
并确保生成的接口(interface)比您可以使用您的类的 Objective-C 版本
ProductModuleName 你可以在 Build Settings -> Packaging -> Product Module Name 看到
关于ios - 来自另一个目标的 Swift 伞头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26058164/