Xcode 如何访问结构&x27;SwiftUI中该结构内的类中的s变量?

Xcode 如何访问结构&x27;SwiftUI中该结构内的类中的s变量?,xcode,swiftui,Xcode,Swiftui,如何从结构中的类中的函数访问@State变量。伪代码如下所示: struct StructName: UIViewRepresentable { @State var variableName = value class className: NSObject { func functionName(parameters) { //How do I access variableName from here? } }

如何从结构中的类中的函数访问@State变量。伪代码如下所示:

struct StructName: UIViewRepresentable {
    @State var variableName = value
    class className: NSObject {
        func functionName(parameters) {
            //How do I access variableName from here?
        }
    }
}

使用
@Binding
,并将其作为init上的参数传递:

struct StructName: UIViewRepresentable {

    @Binding var variableName: Bool

    func makeUIView(context: Context) -> UIView {
        return UIView()
    }

    func updateUIView(_ uiView: UIView, context: Context) {

    }

    func makeCoordinator() -> Coordinator {
        Coordinator(variableName: self.$variableName)
    }

     class Coordinator: NSObject {

        @Binding var variableName: Bool

        init(variableName: Binding<Bool>) {
           _variableName = variableName
        }

        func functionName() {
            //access variableName here
        }
    }
}
structStructName:UIViewRepresentable{
@绑定变量variableName:Bool
func makeUIView(上下文:context)->UIView{
返回UIView()
}
func updateUIView(uiView:uiView,context:context){
}
func makeCoordinator()->Coordinator{
协调员(variableName:self.$variableName)
}
类协调器:NSObject{
@绑定变量variableName:Bool
init(variableName:Binding){
_variableName=variableName
}
func functionName(){
//在此处访问变量名称
}
}
}

使用
@Binding
,并将其作为init上的参数传递:

struct StructName: UIViewRepresentable {

    @Binding var variableName: Bool

    func makeUIView(context: Context) -> UIView {
        return UIView()
    }

    func updateUIView(_ uiView: UIView, context: Context) {

    }

    func makeCoordinator() -> Coordinator {
        Coordinator(variableName: self.$variableName)
    }

     class Coordinator: NSObject {

        @Binding var variableName: Bool

        init(variableName: Binding<Bool>) {
           _variableName = variableName
        }

        func functionName() {
            //access variableName here
        }
    }
}
structStructName:UIViewRepresentable{
@绑定变量variableName:Bool
func makeUIView(上下文:context)->UIView{
返回UIView()
}
func updateUIView(uiView:uiView,context:context){
}
func makeCoordinator()->Coordinator{
协调员(variableName:self.$variableName)
}
类协调器:NSObject{
@绑定变量variableName:Bool
init(variableName:Binding){
_variableName=variableName
}
func functionName(){
//在此处访问变量名称
}
}
}

这里是可能的方法。具体类型用于演示目的

struct StructName: UIViewRepresentable {
    @State var variableName: Bool = false

    class ClassName: NSObject {
        let boundVariable: Binding<Bool>

        init(variableName: Binding<Bool>) {
            self.boundVariable = variableName
        }

        func functionName(parameters: [String]) {
            boundVariable.wrappedValue = true
        }
    }

    // somewhere in place of ClassName instantiation below use
    // ClassName(boundVariable: $variableName)
}
structStructName:UIViewRepresentable{
@状态变量variableName:Bool=false
类名:NSObject{
让boundVariable:绑定
init(variableName:Binding){
self.boundVariable=variableName
}
func函数名(参数:[字符串]){
boundVariable.wrappedValue=true
}
}
//在下面使用类名称实例化的地方
//类名(boundVariable:$variableName)
}

这里是可能的方法。具体类型用于演示目的

struct StructName: UIViewRepresentable {
    @State var variableName: Bool = false

    class ClassName: NSObject {
        let boundVariable: Binding<Bool>

        init(variableName: Binding<Bool>) {
            self.boundVariable = variableName
        }

        func functionName(parameters: [String]) {
            boundVariable.wrappedValue = true
        }
    }

    // somewhere in place of ClassName instantiation below use
    // ClassName(boundVariable: $variableName)
}
structStructName:UIViewRepresentable{
@状态变量variableName:Bool=false
类名:NSObject{
让boundVariable:绑定
init(variableName:Binding){
self.boundVariable=variableName
}
func函数名(参数:[字符串]){
boundVariable.wrappedValue=true
}
}
//在下面使用类名称实例化的地方
//类名(boundVariable:$variableName)
}

我在第一次定义绑定变量(在结构内部,而不是在类内部)的那一行上有一个错误。该行中给出的错误是“参数标签”(wrappedValue:)”与任何可用重载都不匹配。我将类型设置为Bool,将值设置为false。第二个绑定变量上没有错误(我不确定是将变量类型保留为“String”还是将其更改为“Bool”(两种方式都有效).然后下一个错误出现在我设置_varName=varName的行上。它说“无法将“String”类型的值分配给“Binding”类型。想法?很抱歉,我将用一个工作示例更新答案。谢谢,它非常接近工作状态!当我将映射初始化为ContentView时,我给variableName的参数是什么?即,当我编写MapView(variableName:value)时在ContentView中,我应该写什么来代替值?我收到的错误表明它需要一个类型为Binding的值,但我不确定要输入什么?值必须是另一个
@Binding
变量或一个
@State
。如果选择第二个选项,则必须在MapView实例化之前加上一个
$
。`MapView(variableName:$contentViewStateVar)。我在第一次定义绑定变量的那一行(在结构内部,而不是在类内部)有一个错误。那一行给出的错误是“参数标签”(wrappedValue:)'与任何可用的重载都不匹配。我将Type设置为Bool,value设置为false。第二个绑定变量没有错误(我不确定是将变量类型保留为'String'还是将其更改为'Bool'(无论哪种方式都有效)。然后下一个错误出现在我设置_varName=varName的行上。它显示'无法将“String”类型的值分配给“Binding”类型。想法?很抱歉,我将用一个工作示例更新答案。谢谢,它非常接近工作状态!当我将映射初始化为ContentView时,我给variableName的参数是什么?即,当我编写MapView(variableName:value)时在ContentView中,我应该写什么来代替值?我收到的错误表明它需要一个类型为Binding的值,但我不确定要输入什么?值必须是另一个
@Binding
变量或一个
@State
。如果选择第二个选项,则必须在MapView实例化之前加上一个
$
。`MapView(variableName:$contentViewStateVar)。