У меня проблемы с запуском методов просмотра при изменении значения опубликованного свойства. Мой пример кода игровой площадки выглядит так:
class MyFoo: ObservableObject {
@Published var bar: String
init(bar: String) {
self.bar = bar
}
func setNewText(newString: String) {
self.bar = newString
}
func runFunctions() {
setNewText(newString: "Test")
}
}
struct TestView: View {
@ObservedObject let foo = MyFoo(bar: "bar0")
init(){
let barSink = foo.$bar
.sink() { //THIS IS WHERE I GET ERROR "Escaping closure captures mutating 'self' parameter"
self.printResult(result: $0)
}
}
func printResult(result: String) {
print(result)
}
}
let a = TestView()
В основном я знаю, почему я получаю эту ошибку при закрытии, но не знаю, как ее обойти. Это правильный подход для запуска методов просмотра на измененном значении опубликованного свойства виртуальной машины?
Мне это нужно, потому что я использую настраиваемый счетчик, который не готов к SwiftUI, поэтому я не могу привязаться к нему, и единственный способ показать / скрыть его - вызвать его методы.
Любая помощь будет очень признательна
onReceive()
создан специально для того, чтобы слушать издателя! :) 21.11.2019View
struct customView: View { var body: some View { Text("").onRecieve() }}
, и вы даже можете сделать это в родительском иonReceive()
наcustomView
22.11.2019