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

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

我的步骤如下:

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

    import Foundation
    class SwiftInObjc : NSObject{
        func printHello(){
            println("Hello")
        }
    }
  1. 在 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 为我做到了。

标签: objective-c swift


【解决方案1】:

尝试声明

@objc public class SwiftInObjc {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    相关资源
    最近更新 更多