繁体   English   中英

在 Swift 中通过引用原始类型传递

[英]Pass by reference primitive types in Swift

我正在尝试建立一个模型,该模型与其包含的对象共享一个值。 在下面的示例中,我有一个Model对象 a,其中包含一个Struct ,b。 我希望他们都能访问由变量 a 和 aa 引用的Bool 为此,我在Box结构中包装了一个Bool

struct Box<Value> {
    var value:Value
}

struct Model {
    var a: Box<Bool>
    var b:B
    struct B {
        var aa:Box<Bool>
    }
}

struct TestView : View {
    @State var model:Model

    var body: some View {
        VStack {
            Text(model.a.value.description)
            Text(model.b.aa.value.description)

            Button(action: {
                self.model.a.value.toggle()
            }) {
                Text("Button")
            }
        }
    }
}

但是,当我这样运行代码时:

let box = Box<Bool>(value: true)
let contentView = TestView(model: Model(a: box, b: Model.B(aa: box)))

model.b.aa 中的值没有像我预期的那样更新。 有没有不同的方式我应该这样做?

为了您的目的,您需要将原始类型包装在一个类中,并共享该类的一个实例。 没有可以在结构之间共享的原始引用或指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM