Значение SwiftUI State не меняется
Я не знаком с State
. Я протестировал код:
import SwiftUI
class TestState {
@State var a: Int = 3
func increaseA() {
print("before \(a)") //3
a += 1
print("after \(a)") //3?
}
}
TestState().increaseA()
Бывает, что напечатанное значение равно 3! Где я сделал не так?
После комментария, что State
должен быть в View
, Я протестировал код:
import SwiftUI
struct TestState: View {
@State var a: Int = 3
func increaseA() {
print("before \(a)")
a += 1
print("after \(a)")
}
var body: some View {
increaseA()
return Text(a.description)
}
}
Бывает, что Text
покажите "3", а не "4". Я не понимаю
1 ответ
Решение
Ключевое слово @State было впервые введено в Swift5.1, это @propertyWrapper, ранее называлось @propertyDelegate. Более подробную информацию можно найти на сайте property-wrappers.md. КАК СКАЗАЛ ПОЛХАДСОН: @State специально разработан для использования в локальном представлении, Apple рекомендует пометить свойства @State как частные, чтобы действительно подтвердить, что они не предназначены для доступа в другом месте: