Почти всегда, когда вы видите ошибку: «Общий параметр« Self »не может быть выведен», это означает, что типы ошибочны.В этом случае вы пытаетесь связать Observable<NSData>
с Observable<Image?>
.
Также есть несколько других проблем с вашим кодом.
очень редко тип субъекта следует определять с помощью ключевого слова var
, и это не один из тех редких случаев.Ваш foodImage
должен быть let
, а не var
.
Variable
устарел;не используйте это.В этом случае вам даже не нужен объект.
NSData
также неуместен в современном Swift.Вместо этого используйте Data
.
Исходя из того, что вы здесь показали, я ожидаю, что ваш код будет выглядеть примерно так:
class EditFoodViewViewModel: EditFoodViewViewModelType {
let foodImage: Observable<UIImage?>
init(food: Food) {
self.foodImage = Observable.just(UIImage(data: food.image))
}
}
class EditFoodViewController: UIViewController {
@IBOutlet weak var foodThumbnailImageView: UIImageView!
public var food: EditFoodViewViewModelType?
private let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
guard let foodViewModel = food else { return }
foodViewModel.foodImage
.bind(to: foodThumbnailImageView.rx.image)
.disposed(by: disposeBag)
}
}