所以我有一个名为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 ?? ""
使用!强制它是一个字符串。但是如果它不是字符串,使用"这显然是不可能的。