У меня проблемы с дженериками.
Следующий код компилируется просто отлично, но строка if let item = row as? SelectionInputControl<Any> {
не работает так, как я себе представлял.
У меня есть подкласс BasicInputView
, назовем его CountryInputView
, который помещает объект SelectionInputControl<Country>
(Country
в данном случае enum
) в rows
, но ни один не делает SelectionInputControl<Country>
разрешить SelectionInputControl<Any>
, и я не могу использовать SelectionInputControl
(потому что это не скомпилируется).
Как я могу это исправить? Любая помощь будет высоко ценится.
class BasicInputView: UIView {
var popoverPresenter: (UIViewController & UIPopoverPresentationControllerDelegate)? {
didSet {
for row in rows {
if let item = row as? SelectionInputControl<Any> {
item.popoverPresenter = popoverPresenter
}
}
}
}
private var rows = [BasicInputControl]()
}
class SelectionInputControl<T>: BasicInputControl {
var enumValues = [T]()
private var currentValue: T?
var popoverPresenter: (UIViewController & UIPopoverPresentationControllerDelegate)?
}