Swift 类未添加到 Obj-C 项目中 swift 的自动生成标题中

Posted

技术标签:

【中文标题】Swift 类未添加到 Obj-C 项目中 swift 的自动生成标题中【英文标题】:Swift class is not added to autogenerated header for swift in Obj-C project 【发布时间】:2014-11-13 10:27:09 【问题描述】:

当我将 Swift 类添加到 Objective-C 项目时,它并未包含在自动生成的 swift 标头中。

我的步骤如下:

    创建了名为“SwiftTest”的单视图 Objective C 项目 构建设置 -> 打包 -> 将模块定义为“YES” 产品名称(和产品模块名称)未更改,因此为“SwiftTest” 添加了带有单个类的 Swift 文件 SwiftInObjc.swift:

    import Foundation
    class SwiftInObjc : NSObject
        func printHello()
            println("Hello")
        
    
    在 ViewController 类中包含标头和声明的 swift 对象:

#import "SwiftTest-Swift.h"

@implementation ViewController

- (void)viewDidLoad 
    [super viewDidLoad];
    SwiftInObjc * swiftObj;

之后由于错误无法构建该项目:

使用未声明的标识符“SwiftInObjc”

已按预期在派生数据中创建了头文件“SwiftTest-Swift.h”,但它不包含我的 swift 类。

注意:我的情况类似于this question 但是我的类是从 NSObject 子类化的,所以这一定是另一个原因。 (我也尝试过纯 Swift 类:


import Foundation

@objc class SwiftInObjc 
    class func newInstance() -> SwiftInObjc 
        return SwiftInObjc()
    
    func hello() 
        println("hello")
    

但它没有帮助,我仍然有同样的错误)

【问题讨论】:

我只是按照您的确切步骤操作,得到的只是关于 swiftObj 是未使用变量的预期警告。它编译和构建得很好。我正在使用 Xcode 6.1;大概你也在当前版本中? 问题已关闭。 Matt 是对的,这是 XCode 版本问题。但他没有发布答案,所以我不能接受。 确保 swift 类继承自 NSObject 为我做到了。 【参考方案1】:

尝试声明

@objc public class SwiftInObjc 

【讨论】:

以上是关于Swift 类未添加到 Obj-C 项目中 swift 的自动生成标题中的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中使用 Obj-C 类扩展?

在 Swift 中使用 Obj-C 类扩展?

obj-c 项目错误中的 PagingMenuController swift 库

# 通过自动创建的 Bridging header 导入 Obj-C 类, Bridging header 似乎找到它但 Swift 类不会

在swift或obj-c中的uitextview末尾添加一个视图

将 Obj-C 桥接到 Swift 后缺少啥