Не удается получить доступ к 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?

0 ответов

Другие вопросы по тегам