为什么我不能在不收到此错误的情况下将值设置为 @State var?



所以我有一个名为calmnote的状态变量,它被定义为这个名为calmEdit的结构体中的字符串。实际上,我需要将calmNote的值设置为通过一个名为calmManager的可观察对象接收到的content的值。

struct calmEdit : View {
@StateObject var CalmManager = calmManager()
@Environment(.dismiss) var dismiss
@State var calmNote: String = ""
@ViewBuilder
var body: some View {

EmptyView()

ForEach(CalmManager.calmDoccs) { calmDoccs in

self.calmNote = calmDoccs.content  as! String ?? "" // Error: Type '()' cannot conform to 'View'


TextEditor(text: $calmNote)
.padding(.top, 0)
.padding(.leading, 10)
.padding(.trailing, 10)

Button( action: {
CalmManager.updateCalmTheme(calmContent: calmNote, id: idcalm)
}) {
Label("Save", systemImage:"") }
.accentColor(colorScheme == .dark ? Color.pink : Color.pink)
.padding(10)

}}
}

现在,如果我删除self.calmNote = calmDoccs.content as! String ?? "行,我没有得到任何错误,但又一次,我将无法将varcalmNote的值设置为calmDoccs.content。有人知道我怎么才能做到不出现这个错误吗?

提前感谢。

您不能执行像这样从ViewBuilder设置变量的操作。

使用.onAppear.task修饰符在视图出现时运行代码。

EmptyView()
.onAppear {
self.calmNote = CalmManager.calmDoccs.content as? String ?? ""
}

另外,用这一行:

calmDoccs.content  as! String ?? ""

使用!强制它是一个字符串。但是如果它不是字符串,使用"这显然是不可能的。

相关内容

最新更新