Учитывая, что существует совместимое с ObjC перечисление, написанное на Swift:
// 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
имел доступ к свойству?
Примечание. Мне известно о возможности переписать Сообщение в Swift или импортировать App-Bridging-Header.h в Message.h,но это не вариант здесь, я ищу решение, которое будет работать с текущей настройкой.