@Appstorage userdefaults-связанная переменная не обновлена, когда изменяется значение пользователяIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 @Appstorage userdefaults-связанная переменная не обновлена, когда изменяется значение пользователя

Сообщение Anonymous »

У меня есть представление Swiftui со свойством, которое связано с @appstorage с пользователями: < /p>

Код: Выделить всё

struct GeneralSettingsView: View {
@State var model: SettingsProtocol

var body: some View {
SettingsRowWithToggle(
title: "Toggle1",
isOn: $model.toggle1)

SettingsRowWithToggle(
title: "Toggle2",
isOn: $model.toggle2)
}
}

/// Abstract settings
protocol SettingsProtocol {
var toggle1: Bool { get set }
var toggle2: Bool { get set }
}

/// Concrete settings that are stored in userDefaults
struct UserDefaultsSettings: SettingsProtocol {
@AppStorage("toggle1", store: UserDefaults(suiteName: Constants.appGroupID))
var toggle1: Bool = false

@AppStorage("toggle2", store: UserDefaults(suiteName: Constants.appGroupID))
var toggle2: Bool = false
}
и представление создается следующим образом в Body var: ... :
GeneralSettingsView(model: UserDefaultsSettings())
< /code>
Я могу получить значения с удаленного сервера и обновить значение в пользователях: < /p>
let defaults = UserDefaults(suiteName: Constants.appGroupID)
defaults?.set(true, forKey: "toggle1") // UI not updated
defaults?.set(true, forKey: "toggle2")
< /code>
Я ожидаю, что переключатели изменят свое значение, когда я обновляю значения в пользовательском плане, но этого не произойдет. Это ошибка или я делаю что -то не так? Есть ли лучший способ запуска перезагрузки пользовательского интерфейса, когда у меня обновлены значения пользователя в каком -то другом классе?

Подробнее здесь: https://stackoverflow.com/questions/794 ... s-value-is
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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