@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

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