Не удается получить доступ к PropertyWrappers при использовании didSet или передаче метода
Я не знаю, это ошибка или ожидаемое поведение @PropertyWrappers
но мне кажется странным
Допустим, у меня есть простой класс TestViewModel
import Foundation
import Combine
final class TestViewModel {
@Published var someText: String = ""
}
Когда я создаю вычисляемое свойство с didSet в TestTableViewCell
Я не смогу получить доступ Published
так что я могу назначить его для некоторого KeyPath, например.
Следующий код выдаст ошибку времени компиляции:
final class TestTableViewCell: UITableViewCell {
var testViewModel: TestViewModel! {
didSet {
setUpViewModel()
}
}
private func setUpViewModel() {
testViewModel.$someText // Error: Value of type 'TestViewModel' has no member '$someText'; did you mean 'someText'?
}
}
То же самое происходит при передаче экземпляра vm в качестве параметра метода:
final class TestTableViewCell: UITableViewCell {
func setUpViewModel(testViewModel: TestViewModel) {
testViewModel.$someText // Error: Value of type 'TestViewModel' has no member '$someText'; did you mean 'someText'?
}
}
Когда я храню это как let
или computedProperty Я смогу получить доступ к опубликованному экземпляру:
final class TestTableViewCell: UITableViewCell {
let testViewModel = TestViewModel() // or var testViewModel { return TestViewModel() }
private func setUpViewModel() {
testViewModel.$someText // No error
}
}
Есть ли какой-либо способ использовать didSet или метод со ссылкой на мой viewModel и при этом иметь возможность получать доступ как к обернутому значению, так и к экземпляру PropertyWrapper?