EnvironmentObject обновлен в представлении, но не в корневом файле приложения.IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Гость
 EnvironmentObject обновлен в представлении, но не в корневом файле приложения.

Сообщение Гость »


Я столкнулся с очень странной проблемой в своем приложении SwiftUI.

Я пытаюсь сохранить некоторую информацию о пользовательских данных благодаря сериализации JSON. Поэтому я создал класс UserData, который передается как объект среды и доступен во всех моих приложениях:

(Я намеренно упрощаю код, удаляя часть сохранения и загрузки данных из основного файла приложения)

класс UserData: ObservableObject, Codable { вар горшки: Set init(горшки: Set) { self.pots = горшки } } struct Pot: идентифицируемый, кодируемый, хешируемый{ пусть идентификатор = UUID() пусть заголовок: Строка пусть описание: Строка вар currentMoneyAmout: Float пусть potImage: URL пусть подарок: Подарок пусть участники: [Участник] пусть OwnerId: строка func hash(into hasher: inout Hasher) { hasher.combine (идентификатор) } static func == (слева: горшок, справа: горшок) -> Bool { вернуть lhs.id == rhs.id && lhs.title == rhs.title } } расширение Pot { статический letviewPot = Pot( название: "Кадо Коко", описание: «Кадо для юбилея кокоса», текущие деньгиАмаут: 30, potImage: URL(строка: «https://montetasoiree.com/wp-content/up ... _intro.jpg»)!, подарок: .previewGift, члены: [.previewMember], идентификатор владельца: "а" ) } @main структура PotivApp: Приложение { @State Private var userData = UserData(pots: []) в этом(){ FirebaseApp.configure() } var body: некоторая сцена { ОкноГруппа { КонтейнерВью() .environmentObject(данные пользователя) } } } Затем я получаю этот объект UserData в представлении, чтобы обновить его:

struct newPot: View { @Environment(\.dismiss) вар отклонить @EnvironmentObject частная переменная userData: UserData var body: some View { VStack{ Разделитель() Кнопка{ сохранитьПот() увольнять() } этикетка: { Текст("Креер") .font(.system(размер: 20, вес: .bold)) .frame(maxWidth: .infinity, maxHeight: 50) .foregroundColor(Цвет.белый) .background(Цвет.синий) .cornerRadius(.бесконечность) } .padding(.горизонтальный) Разделитель() } } частная функция savePot() { пусть горшок = Pot.previewPot self.userData.pots.insert(горшок) self.userData.objectWillChange.send() } } Когда я печатаю свои горшки пользовательских данных в этом представлении, оно содержит новый банк, который я только что создал. Но когда я пытаюсь распечатать горшки из основного файла приложения, он не содержит нового горшка, и я действительно не понимаю, почему.

Во-первых, я подумал, что два объекта UserData не одинаковы. Но после проверки это так.

У кого-нибудь была идея?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Можно ли получить NavigationSplitView для работы на iPhone, когда не находится на корневом представлении?
    Гость » » в форуме IOS
    0 Ответы
    10 Просмотры
    Последнее сообщение Гость
  • Можно ли получить NavigationSplitView для работы на iPhone, когда не находится на корневом представлении?
    Anonymous » » в форуме IOS
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • SwiftUi UIViewRepresentable не получает обновления состояний через EnvironmentObject или ObservedObject
    Гость » » в форуме IOS
    0 Ответы
    29 Просмотры
    Последнее сообщение Гость
  • Несколько @EnvironmentObject одного типа
    Anonymous » » в форуме IOS
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Передайте EnvironmentObject как слабую ссылку на SwiftUI View.
    Anonymous » » в форуме IOS
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»