我有一个 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")
}
}
我可以调用类,但无法访问类中的函数;如您所见,@objc
类及其函数上都有前缀。
你知道为什么会这样吗?我也是在想使用该函数之前构建项目,因为首先需要构建 Swift 桥接 header ,对吗?
哦,顺便说一句,我设法在我的 Swift 类中访问了 Objective-C 代码。所以不会有太大的错误(我手动创建了 Objective-C 桥接 header ):)
谢谢,大卫
最佳答案
我刚刚测试过它在一个旧的 Objective C 项目中对我有用。我在 Xcode 6.0.1 上。
我这样做了:
- 将我的旧项目升级到 Xcode 6,并将 Deployment Target 设置为 7.1
- 创建了一个新的 Swift 文件并同意配置 Objective-C 桥接 header 。
- 将您的代码粘贴到其中。 (我还必须为 UIColor 导入 UIKit 才能编译。)
- 在我的主视图 Controller 中,我把这个:
在顶部:
#import "PhotoUnzipper-Swift.h"
(PhotoUnzipper 是我项目的名称)
并在 viewDidLoad 中:
FileIconColor *color = [[FileIconColor alloc] init];
[color test];
它已编译,我在控制台中打印出“测试”。
重要:我没有导入 <#ProjectName#>-Swift.h
文件。 Xcode 负责这件事。
我第一次尝试时遇到了问题,因为我的部署目标是 4.1。 (愚蠢的我。)我似乎无法解决这个问题,但又重新开始,并严格按照上述步骤进行操作,并且成功了。
关于ios - 将 Swift 集成到 Objective-C 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25953362/