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 的自动生成标题中的主要内容,如果未能解决你的问题,请参考以下文章
obj-c 项目错误中的 PagingMenuController swift 库
# 通过自动创建的 Bridging header 导入 Obj-C 类, Bridging header 似乎找到它但 Swift 类不会