【问题标题】: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 类,我需要标题。

标签: objective-c swift xcode header bridging-header


【解决方案1】:

检查 Objective-C 生成的 Interface Header Name 的 Build 设置,确保 Install Objective-C Compatibility Header 设置为 Yes。另外,请确保那里的文件名符合您的预期。

【讨论】:

  • 它们都设置得很完美。它只是在我想使用它们的“AppDelegate.m”文件中找不到头生成的头文件。
【解决方案2】:

所以最后在网上搜索后,另一个 SO 帖子(答案)帮助了我。这可能是因为桥接问题或编译问题,我必须“构建”项目以生成标题或其他东西。解决方案来自这篇帖子https://stackoverflow.com/a/45338549/8102549here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 2014-01-05
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    相关资源
    最近更新 更多