使用SwiftUI时异步填充/预填充多个用户可变的“@State”值?
我有一些使用SwiftUI时异步填充/预填充多个用户可变的“@State”值?,swiftui,combine,Swiftui,Combine,我有一些TextField和“.text”值,这些值应该由在“init()”(可以移动)中调用的方法填充,该方法使用网络中的struct数据异步调用完成处理程序 问题是。。。同时,用户也可以开始手动输入这些值,完成回调不应覆盖手动编辑的值 我不知道如何: 仅当用户尚未修改现有值时,才更新@State String变量的值以替换现有值。。。同时,最终用户也可以更改它们 一次更新来自同一请求的@State值的N个。一个请求用于拉入中的所有数据,因此将其映射为单个值,同时使其如上所述是可变的,这是目前
TextField
和“.text”值,这些值应该由在“init()”(可以移动)中调用的方法填充,该方法使用网络中的struct
数据异步调用完成处理程序
问题是。。。同时,用户也可以开始手动输入这些值,完成回调不应覆盖手动编辑的值
我不知道如何:
@State String
变量的值以替换现有值。。。同时,最终用户也可以更改它们@State
值的N个。一个请求用于拉入中的所有数据,因此将其映射为单个值,同时使其如上所述是可变的,这是目前的一个难题这似乎是联合收割机的工作,只是还不确定从何处开始。我假设用户编辑的是每个字段,而所有其他字段都应该单独处理
将所有状态移动到
可观察对象中
,使状态变量@Published,从每个设置中获取一个发布者,并从每个设置中创建一个接收器如果stateX!=initialStateXValue{stateXUserModified=true}在每个接收器内,并且在ObserveObject上有一个方法networkUpdate(loadedData:),该方法仅在关联的stateXUserModified为false时设置状态。我假设用户编辑的是每个字段,而所有其他字段都应该单独设置
将所有状态移动到
可观察对象中
,使状态变量@Published,从每个设置中获取一个发布者,并从每个设置中创建一个接收器如果stateX!=initialStateXValue{stateXUserModified=true}在每个接收器内,并在ObserveObject上有一个方法networkUpdate(loadedData:),该方法仅在关联的stateXUserModified为false时设置状态。非常有效,谢谢!虽然有一个包含这些东西的“可变状态”对象有点糟糕。例如,如果我想在出现错误时也显示一个警报
,那么我就必须将整个视图的单个可识别的变量也移到这个位置,不是吗?例如($InteractiveEstate.alertPresentable){(presentable)->Alert in/*…*/}
因为它似乎只支持每个视图中的第一个.alert
,至少在Xcode 11b5中是这样的?您也可以将整个内容放入属性包装器中,这样可以更好地使用和重用。我看不到出现错误与问题之间的联系(根据是否被用户修改来修改状态)。我听说可以使用文本(“”.hidden().alert
)显示多个.sheet
,但这是另一个问题,非常有趣,谢谢!尽管有一个“可变状态”有点糟糕例如,如果我想在出现错误时也显示一个警报
,我就必须将整个视图的单个可识别的变量
也移到其中,不是吗?例如.Alert($interactiveState.alertPresentable){(presentable)->Alert in/*…*/}
因为它似乎只支持每个视图中的第一个.alert
,至少在Xcode 11b5中是这样的?您也可以将整个内容放入属性包装器中,这样可以更好地使用和重用。我看不到出现错误与问题之间的联系(根据是否被用户修改来修改状态)。我听说可以使用文本(“”.hidden().alert
)显示多个.sheet
,但这是另一个问题