我有一个简单的应用程序,该应用程序的日期组件已保存到核心数据中。我已经设置了一个允许编辑的视图,但是当加载此编辑视图时,我的日期选择器将始终显示当前日期,而不是创建项目时先前输入的日期。
我尝试使用onAppear()设置日期值,但这确实可行。我加载了编辑视图,并且DatePicker显示了我想要的存储日期。但是,如果我希望对选择器进行更改,则Xcode会发出警报,指出“在视图更新期间修改状态,这将导致未定义的行为”。我不确定如何设置该值,而不是状态的原因和问题。
var thisCook: CookData
@State var updatedDate = Date()
DatePicker(selection: $updatedDate) {
Text("Cook Date:")
}.onAppear() {
self.updatedDate = self.thisCook.date
//Alert is shown for the line above
}
我不确定确切的代码在这里会有所帮助,但这就是我的问题所在。如果我需要展示更多,请告诉我。就像我之前说过的那样,它确实使用先前保存的日期加载了编辑视图,但是如果我想输入该日期,则会收到修改状态警报。
答案 0 :(得分:0)
您正在用@State var updatedDate = Date()
分配当前日期,这就是为什么要显示该日期。在初始化中,您还可以将theCook.date
分配给_updatedDate
。
为避免使用Modifying state during view update
,将状态移至ObservableObject
可能会有所帮助。