尝试附加结构体数组时发生变异错误

Aus*_*nyi 3 struct immutability ios swift swiftui

我正在尝试在 SwiftUI 中创建一个操作来向我的数据集Form添加附加内容Child。当我尝试附加时newChild出现错误:

无法对不可变值使用变异成员:“self”是不可变的

struct Child : Identifiable {

   var id = UUID()
   var birthday: Date
   var name: String

}

struct ContentView: View {

    var children : [Child] = []

    var body: some View {

        VStack {
              Button(action: {
                  let newChild = Child(birthday: Date(), name: "Carl")
                  children.append(newChild)
              }) {
                  Text("Add Child")
              }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

children据我所知,我的数组是可变的,那么为什么我会收到此错误?

gra*_*ell 5

问题是,struct如果没有标记正在更改这些属性的函数,则 a 无法更改其自己的属性mutating。您可以\xe2\x80\x99t 标记bodymutating,但您可以创建children一个@State var. @State变量是可变的,但只能在您的 view\xe2\x80\x99sbody属性中可变。

\n