Я не знаю, является ли это ошибкой или ожидаемым поведением @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?