SwiftUI: изменение структуры в свойстве экземпляра состояния (а не в оболочке @State) в классе не сохраняет изменения. Что я делаю не так? - PullRequest
0 голосов
/ 03 августа 2020

У меня есть следующий код игровой площадки xcode, чтобы проиллюстрировать эту проблему:

import SwiftUI

struct S1 {
    var list = ["a", "b"]
}

class C1 {
    var s1 = State(initialValue: S1())
    var s2 = S1()
}

var c1 = C1()
var list = c1.s1.wrappedValue.list
list.append("d")
var s1_modified = c1.s1.wrappedValue
s1_modified.list = list

s1_modified.list
// prints ["a","b","d"]

c1.s2 = s1_modified
c1.s2.list
// prints ["a","b","d"] as expected

c1.s1.wrappedValue = s1_modified
c1.s1.wrappedValue.list
// prints ["a","b"]
// expected ["a","b","d"]

Я пробовал много вариантов этого. Мне нужен экземпляр состояния для передачи различных объектов представления в моей сложной иерархии, и я не хочу создавать отдельное состояние в каждом из них (становится слишком беспорядочно). Неужели так сложно вручную присвоить значение экземпляру State, не заключенному в оболочку @State? Я действительно хочу, чтобы sh они открыли исходный код этого кода, чтобы мы могли решить подобную проблему за считанные минуты, вместо того, чтобы тратить бесчисленные часы, пытаясь угадать, что они делают c.

...