【问题标题】:'Cannot find interface declaration' in auto-generated Swift bridging header自动生成的 Swift 桥接头中的“找不到接口声明”
【发布时间】:2015-12-03 12:29:36
【问题描述】:

我当前的项目包含 Swift 和 Objective-C 代码。两种类型的源文件都使用另一种语言的代码。 当我进行完全清理和重新编译时,Module-Swift.h 中几乎每个 Swift 类声明都会出现错误,格式如下:

Cannot find interface declaration for 'UIViewController', superclass of 'CustomViewController'

我的症状与this question 相似,情况与this question 相似。换句话说:

  • Module-Bridging_Header.h 导入我的 Objective-C 标头,Class.h
  • 实现文件Class.m 导入Swift 标头Module-Swift.h

如果我按照this question 的答案中的方法,我可以通过添加以下文件并导入它来代替Module-Swift.h 来解决错误:

//
//  Module-Swift-Fixed.h
//  Module
//

#ifndef Module_Swift_Fixed_h
#define Module_Swift_Fixed_h

#import <Foundation/Foundation.h>

#import <CoreData/CoreData.h>
#import <UIKit/UIKit.h>

#import "Module-Swift.h"

#endif /* Module_Swift_Fixed_h */

这似乎是一个可怕的 hack。我是否错过了在 Xcode 中实现这一目标的一些正确方法?

【问题讨论】:

  • 你在使用 Swift 2.0 吗? Xcode 7似乎没有问题。如果是,您可以发布项目吗?
  • 我遇到了类似的问题。我的(稍微好一点?)hack 是将缺少的导入添加到桥接头中。

标签: objective-c xcode swift


【解决方案1】:

在 Obj-C 文件中,需要导入 swift 模块(使用#import "Module-Swift.h")。

仅在您将使用 Swift 模块中定义的类型的文件中执行此操作。

【讨论】:

    【解决方案2】:

    我无法表达这对我有多大帮助。不幸的是,我们必须使用 OP 在使用混合 objc 和 Swift 模块时使用的 hack。如果您的用例可能,您应该尝试分离模块,但如果不可能,请使用 hack。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-25
      • 2015-05-30
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多