如果您不介意在(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
:
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 }
}
尽管该类型未作为桥接enum
,但在Swift代码中使用它时却感觉非常相似。
您可以在结合使用Swift和Cocoa和Objective-C文档的“与C API交互”中阅读有关此技术的更多信息。