Swift 语言增强
... Swift 枚举现在可以使用 @objc 属性导出到 Objective-C。@objc 枚举必须声明一个整数原始类型,并且不能是通用的或使用关联值。因为 Objective-C 枚举没有命名空间,所以枚举案例被导入到 Objective-C 作为枚举名称和案例名称的连接。
以上来自Xcode 6.4 发行说明
为此,您在 Objective-C 中定义值,您可以使用NS_TYPED_ENUM
宏在 Swift 中导入常量 例如:
.h 文件
typedef NSString *const ProgrammingLanguage NS_TYPED_ENUM;
FOUNDATION_EXPORT ProgrammingLanguage ProgrammingLanguageSwift;
FOUNDATION_EXPORT ProgrammingLanguage ProgrammingLanguageObjectiveC;
.m 文件
ProgrammingLanguage ProgrammingLanguageSwift = @"Swift";
ProgrammingLanguage ProgrammingLanguageObjectiveC = @"ObjectiveC";
在 Swift 中,这是作为结构体导入的:
struct ProgrammingLanguage: RawRepresentable, Equatable, Hashable {
typealias RawValue = String
init(rawValue: RawValue)
var rawValue: RawValue { get }
static var swift: ProgrammingLanguage { get }
static var objectiveC: ProgrammingLanguage { get }
}
尽管该类型没有桥接为枚举,但在 Swift 代码中使用它时感觉非常相似。
您可以在Using Swift with Cocoa and Objective-C 文档的“与 C API 交互”中阅读有关此技术的更多信息