【问题标题】:Swift & Objective-C project - generated -Swift.h error - Cannot find interface declaration for UIViewControllerSwift & Objective-C 项目 - 生成 -Swift.h 错误 - 找不到 UIViewController 的接口声明
【发布时间】:2015-05-30 21:50:51
【问题描述】:

我有一个使用 Swift 生成的桥接头的项目,并且项目设置正确(名称中没有空格,使用模块,在我的 .mm 文件中预先声明 Swift 类,删除派生数据,进行干净的重建等等...)。桥接头生成良好,但自动生成的 -Swift.h 中有错误。更糟糕的是,这些错误出现在 AppDelegate 和 ViewController 的生成(在项目创建中 - Swift)版本上,通常可以正常编译。 -Swift.h 中的错误是:

  • @interface AppDelegate : UIResponder <UIApplicationDelegate>
    >> 找不到超类“UIResponder”的接口声明 'AppDelegate'
    >> 找不到“UIApplicationDelegate”的协议声明
  • @interface ViewController : UIViewController
    >> 找不到超类“UIViewController”的接口声明 'ViewController'

我搜索了 Stack Overflow 和网络,但找不到任何解决此特定问题的答案。其他人有这个吗?或者,有没有一种方法可以标记我的 AppDelegate 和 ViewController 类,以便 Xcode 尝试为这些 Swift 类创建 Objective-C 存根,因为我实际上并不需要它们?

【问题讨论】:

    标签: ios objective-c xcode swift language-interoperability


    【解决方案1】:

    只需添加

    #import <UIKit/UIKit.h>
    

    之前

    #import <YourProject-Swift.h>
    

    在 .mm 文件中。对我有帮助。

    【讨论】:

    • 非常感谢!这是唯一对我有用的解决方案。
    • 你拯救了我的一天。 +=1
    【解决方案2】:

    我遇到了同样的问题并发现了..

    -Swift.h 仅适用于 Objective-C,不适用于 Objective-C++ (.mm)

    所以我使用 Objective-C 类来连接 Swift 类。此外,您始终可以在 Objective-C 类中加载您的 Objective-C++ 类。

    【讨论】:

    • 我在使用 CoreData 时遇到了这个问题 :(
    • 对于CoreData,我使用Objective C 来处理CoreData 模型类。随意查看我在 github 上的示例数据库应用程序 SweeneyApps Link at Github
    • 它适用于 Xcode 13 中的 Objective-C++。
    【解决方案3】:

    尝试将 UIKit/UIKit.h 导入到桥接头文件中。

    【讨论】:

    • 对我来说,在 Project-Swift.h 中导入 UIKit/UIKit.h 并没有帮助,但在我实际的 Objective C 头文件中这样做就可以了。
    • 如果它不起作用。尝试将 UIKit/UIKit.h 导入到桥接头文件中。
    • 您不应该更改 -Swift.h 文件,因为这是自动生成的,一旦 Xcode 重新创建此文件,问题就会反击。
    【解决方案4】:

    Swift 不能很好地与 Objective-C++ 配合使用。由于我需要与 C++ 交互,我倾向于编写一个 Objective-C++ 类 MyClass_CPP,其中只包含与 C++ 的接口,然后编写一个可以与 Swift 很好地配合使用的 Objective-C 子类 MyClass。

    【讨论】:

      猜你喜欢
      • 2011-11-27
      • 2019-02-23
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 2016-03-24
      • 2011-03-26
      相关资源
      最近更新 更多