IBInspectable не распознается при использовании NS_REFINED_FOR_SWIFT

У меня есть собственный класс Objective-C, который содержит два CGFloat s:

@property (nonatomic, assign) IBInspectable CGFloat minimumConstant NS_REFINED_FOR_SWIFT;
@property (nonatomic, assign) IBInspectable CGFloat maximumConstant NS_REFINED_FOR_SWIFT;

Оба помечены как IBInspectable, В инициализаторе класса я установил оба бота NaN так как мне нужно представлять разницу между 0 и ничем. Чтобы сделать класс удобным для использования из Swift, я пометил оба свойства как NS_REFINED_FOR_SWIFT и создал расширение Swift с улучшенной реализацией:

@IBInspectable public var minimumConstant: CGFloat? {
    get {
        let constant = __minimumConstant
        return constant.isNaN ? nil : constant
    }
    set {
        if let constant = newValue {
            __minimumConstant = constant
            return
        }
        __minimumConstant = CGFloat.nan
    }
}

@IBInspectable public var maximumConstant: CGFloat? {
    get {
        let constant = __maximumConstant
        return constant.isNaN ? nil : constant
    }
    set {
        if let constant = newValue {
            __maximumConstant = constant
            return
        }
        __maximumConstant = CGFloat.nan
    }
}

Это прекрасно работает при использовании моего класса из кода. При использовании Swift NaN будет сопоставлен с nil и я могу использовать дополнительную распаковку как обычно.

Проблема в том, что как только я добавлю NS_REFINED_FOR_SWIFT Интерфейсный Разработчик больше не будет распознавать мои свойства как IBInspectable и не показывает их.

Это известная проблема? Есть ли обходной путь для этого?

0 ответов

Другие вопросы по тегам