Передача по ссылочным примитивным типам в Swift - PullRequest
1 голос
/ 22 января 2020

Я пытаюсь создать модель, которая разделяет значение с содержащимися в нем объектами. В приведенном ниже примере у меня есть Model объект, который содержит Struct, b. Я хотел бы, чтобы у них обоих был доступ к Bool, на который ссылаются переменные a и aa. Для этого я обернул Bool в Box структуру.

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 не обновляется, как я ожидал. Есть ли другой способ, которым я должен делать это?

1 Ответ

0 голосов
/ 22 января 2020

Для вашей цели вам понадобится обернуть примитивный тип в классе и поделиться экземпляром этого класса. Не существует необработанной ссылки или указателя, которые могут быть разделены между структурами.

...