鉴于有一个用 Swift 编写的 ObjC 兼容枚举:
// from MessageType.swift
@objc enum MessageType: Int {
case one
case two
}
和一个 ObjC 类,其类型的属性MessageType
必须提前声明:
// from Message.h
typedef NS_ENUM(NSInteger, MessageType);
@interface Message: NSObject
@property (nonatomic, readonly) MessageType messageType;
@end
为了Message
在 Swift 代码库的其余部分中使用 ,Message.h
被添加到桥接头中:
// from App-Bridging-Header.h
#import "Message.h"
现在,假设有一个 Swift 类试图读取该messageType
属性:
// from MessageTypeReader.swift
class MessageTypeReader {
static func readMessageType(of message: Message) -> MessageType {
return message.messageType
}
}
编译将失败并出现以下错误:
Value of type 'Message' has no member 'messageType'
我的问题是:有没有办法向前声明一个 Swift 枚举以便MessageTypeReader
能够访问该属性?
注意:我知道将 Message 重写为 Swift 或将 App-Bridging-Header.h 导入 Message.h 的可能性,但这不是一个选项,我正在寻找一种适用于当前设置的解决方案。