Да, вы пытаетесь сделать что-то слишком общее.Например, если вы хотите, чтобы кнопка была отключена для отсутствующей строки, вы, вероятно, также хотите, чтобы она была отключена для пустой строки, но нет никакого способа выразить это в вашей подшивке.
Тем не менее, ваш код компилируется нормальнодля меня.Я предлагаю вам почистить папку сборки и перестроить.Несмотря на то, что он компилируется, точка использования становится более сложной, чем я думаю, вам бы хотелось.
let foo = Observable<Int?>.just(nil)
foo
.map { $0 as Any? }
.bind(to: button.rx.isEnabledForModel)
.disposed(by: bag)
Обратите внимание, что вам нужно вручную отобразить Int?
в Any?
.Если вы удалите карту, вы получите ошибку «Общий параметр« Self »не может быть выведен».Поскольку это универсальный параметр, система не будет искать возможные совпадения через дерево наследования и поэтому не примет isEnabledForModel
.
.