为啥找不到 Swift 4 语言的 Xcode 目标 c 接口标题名称
Posted
技术标签:
【中文标题】为啥找不到 Swift 4 语言的 Xcode 目标 c 接口标题名称【英文标题】:Why the Xcode objective c interface header name isn't found for Swift 4 language为什么找不到 Swift 4 语言的 Xcode 目标 c 接口标题名称 【发布时间】:2018-12-28 15:37:57 【问题描述】:我目前正在开发一个 Objective C 项目,并且需要很少的 swift 文件支持。根据Apple官方指南,在创建桥接头后,我这样做了
#import "ProjectName-Swift.h"
访问 swift 类。它没有用。所以,我把“Defines Module”改成“YES”,改写了带有模块名前缀的header,一切都是徒劳的。然后我想到将编译语言切换为“Swift 3”,瞧,它可以工作了!应用在手机上运行。
但是,我也在使用的一些插件和框架不能与 Swift 3 一起使用。所以,这里没有安宁。我需要一个解决方案。救命!
【问题讨论】:
您使用的是什么版本的 Xcode?当你说“插件和框架......不适用于 Swift 3”时,你是说他们使用的是 Swift 4.x 吗?还是 Swift 2.x?或许你可以给我们步骤来创建MCVE... “它没有用”是什么意思?你遇到了什么错误? @Rob Xcode 是最新的 10.1 (10B61)。所有插件和框架都支持 Swift 4。 @thomasgotzsche 当我在 Swift 4 中时,错误是“找不到文件”,但当我在 Swift 3 中时,错误消失了,编译“成功”,但是在运行时应用程序中断说特定插件不起作用。当我删除 swift 类并简单地运行它时,一切都在 Swift 4 中运行,但对于我的 swift 类,我需要标题。 【参考方案1】:检查 Objective-C 生成的 Interface Header Name 的 Build 设置,确保 Install Objective-C Compatibility Header 设置为 Yes。另外,请确保那里的文件名符合您的预期。
【讨论】:
它们都设置得很完美。它只是在我想使用它们的“AppDelegate.m”文件中找不到头生成的头文件。【参考方案2】:所以最后在网上搜索后,另一个 SO 帖子(答案)帮助了我。这可能是因为桥接问题或编译问题,我必须“构建”项目以生成标题或其他东西。解决方案来自这篇帖子https://***.com/a/45338549/8102549 或here
【讨论】:
以上是关于为啥找不到 Swift 4 语言的 Xcode 目标 c 接口标题名称的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 找不到 ProductModuleName-Swift.h