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
и не показывает их.
Это известная проблема? Есть ли обходной путь для этого?