为啥找不到 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 看不到 swift 子类

Xcode 找不到 ProductModuleName-Swift.h

XCode - 为啥我找不到文件?

Xcode 7.3 找不到“Project-Swift.h”文件

Xcode Swift 包管理器错误 - 找不到存储库

为啥 Xcode 找不到我的单元测试应用程序?