Учитывая, что перечисление, совместимое с 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, но здесь это не вариант, я ищу решение, которое будет работать с текущей настройкой.