场景:我已经通过.h网桥将Objective-C文件暴露给Swift;所以我可以从.Swift通过Storyboard启动Objective-C。
然而, 我有一些全球性的枚举和在ObjC需要的Environment.Swift文件中声明的结构:
enum BarButtonItem:Int {
case cancel = 1
case back
case save
case activate
case upload
case share
}
在Swift中访问枚举:
@IBAction func navButtonAction(sender: UIBarButtonItem) {
if let buttonItem = BarButtonItem(rawValue: sender.tag) {
switch buttonItem {
case .save:
println("{(3.3)AccessBoundaries} Save.")
default:
println("")
}
}
self.dismissViewControllerAnimated(true, completion: nil)
}
我想在Objective-C文件中访问此(和其他数据类型):
- (IBAction)barButtonAction:(UIBarButtonItem *)sender {
BarButtonItem....?
}
Xcode没有意识到这一点。
如何将.Swift文件中定义的环境数据类型(或我可以吗?)暴露给Objective-C文件?
......并且,是否有可能在Objective-C中解释.Swift的结构?
答案 0 :(得分:6)
有许多Swift功能无法在Objective-C中使用。前几天我发布了answer to a question的问题。我会在这里重新发布答案:
根据关于Swift和Objective-C兼容性的Apple's docs:
您可以访问类或协议中的任何内容 标有@objc属性,只要它兼容 Objective-C的。此 排除了 仅限Swift的功能,例如列出的功能 这里:
- 泛型
- 元组
- Swift中定义的枚举
- Swift中定义的结构
- Swift中定义的顶级函数
- 在Swift中定义的全局变量
- Swift中定义的Typealiases
- Swift式variadics
- 嵌套类型
- 咖喱功能