Swiftui self.myString=string和self.\u myString=State(initialValue:string)之间的差异?

Swiftui self.myString=string和self.\u myString=State(initialValue:string)之间的差异?,swiftui,state,Swiftui,State,在这种情况下: struct MyView: View { @State private var myString: String } 我首先尝试以这种方式初始化它: init(_ string: String) { self.myString = string } 但我有一个错误: 初始化前使用的变量“self.myString” 然后我做了这个: init(_ string: String) { self._myString = State(initialValu

在这种情况下:

struct MyView: View {
    @State private var myString: String
}
我首先尝试以这种方式初始化它:

init(_ string: String) {
    self.myString = string
}
但我有一个错误:

初始化前使用的变量“self.myString”

然后我做了这个:

init(_ string: String) {
    self._myString = State(initialValue: string)
}
它工作得很好,但由于声明式编程和状态对我来说是一个新事物,我并不真正理解它们之间的区别和这里发生的事情。

使用@state var name:String是一个属性包装器,它是一个围绕名为state类型的_name的变量的很好的包装器。实际上,这:

结构MyView:View{ @状态私有变量myString:String } 换言之:

结构MyView:View{ private var\u myString:State 私有变量$myString:绑定{ _myString.projectedValue } 私有变量myString:String{ 获取{u myString.wrappedValue} set{u myString.wrappedValue=$0} } } 这应该可以解释在初始化_myString之前使用myString的问题。

使用@State var name:String是一个属性包装器,它是一个很好的包装器,它围绕着一个名为State类型的_name的变量。实际上,这:

结构MyView:View{ @状态私有变量myString:String } 换言之:

结构MyView:View{ private var\u myString:State 私有变量$myString:绑定{ _myString.projectedValue } 私有变量myString:String{ 获取{u myString.wrappedValue} set{u myString.wrappedValue=$0} } } 这应该可以解释在初始化myString之前使用myString的问题。

State是一个属性包装器。关于swift属性包装器读取状态是属性包装器。关于swift属性包装已阅读