【发布时间】:2022-11-11 20:22:22
【问题描述】:
我有多个将在 TextField 中更改的 @State var,但我想保留在 TextField 上更改状态值后要使用的旧值
@State var name: String
var oldName = ???
最好的方法是什么?
【问题讨论】:
-
你试过
didSet { oldValue }吗?恕我直言,最好是学习 Swift 和 SwiftUI 的基础知识。否则会浪费更多时间在 stackoverflow 上提出问题,这些问题将在文档中介绍 -
@user1046037
didSet不适用于@State属性包装器 -
@vadian 我错过了什么吗?似乎对我有用
@State private var name: String? { didSet { print("oldValue = \(oldValue ?? "nil")") }}。 -
@user1046037 请在
didSet闭包中尝试oldName = oldValue,并在视图中显示oldName和Text(oldName)。什么都不会发生。 -
不,
didSet不起作用,因为name属性实际上是State类型(这就是属性包装器的用途)。更改$name值实际上不会更改或设置State属性,因此永远不会调用didSet。