Я думаю, что если у вас нет доступа для изменения исходного кода, единственное, что вы можете сделать, это что-то вроде этого:
class YourRatingView: RatingView {
private let ratingSubject: ReplaySubject<Int>
override var rating: Int {
get { return super.rating }
set {
super.rating = newValue
ratingSubject.on(.next(super.rating))
}
}
override init(){
ratingSubject = ReplaySubject<Int>.create(bufferSize: 1)
super.init()
ratingSubject.on(.next(super.rating))
}
var rating_rx: Observable<Int> {
return ratingSubject.asObservable()
}
}
Посмотрите, что я использую ReplaySubject
, таккаждый раз, когда вы подписываетесь, вы получаете как минимум последнее значение рейтинга.Затем после каждого изменения вы получите событие в вашей подписке.
Пример использования:
let ratingView = YourRatingView()
ratingView.rating_rx.subscribe(onNext: { rating in
print(rating)
}).disposed(by: disposeBag)