我有一个Objective-C应用程序,我喜欢整合Swift,但我有一个奇怪的问题。
我将<#ProjectName#>-Swift.h
导入到我的实现文件中,我需要Swift类。我的Swift类看起来像这样:
import Foundation
@objc class FileIconColor: NSObject {
@objc func fileIconColorForSuffix(suffix: NSString) -> UIColor {
var color:UIColor!
//Some huge calculations
return color
}
//Just for testing
@objc func test () {
println("Test")
}
}
我可以调用Class,但是我无法访问类中的函数;如您所见,Class和它的函数都有@objc
前缀。
你知道为什么会这样吗?我还想在使用该函数之前构建项目,因为首先需要构建Swift桥接头,我是否正确?
哦,顺便说一句,我设法在我的Swift类中访问Objective-C代码。所以没有太大的错误(我手动创建了Objective-C桥接头):)
谢谢大卫
答案 0 :(得分:2)
我刚测试过它在旧的Objective C项目中对我有用。我正在使用Xcode 6.0.1。
我这样做了:
在顶部:
#import "PhotoUnzipper-Swift.h"
(PhotoUnzipper是我项目的名称)
并在viewDidLoad中:
FileIconColor *color = [[FileIconColor alloc] init];
[color test];
它已编译,我在控制台中打印出“Test”。
重要提示: 我不导入<#ProjectName#>-Swift.h
文件。 Xcode负责这一点。
我第一次尝试时遇到问题,因为我的部署目标为4.1。 (愚蠢的我。)我似乎无法解决这个问题,但又开始了,并且完全按照上面的步骤进行操作。