Часто задаваемые вопросы
August 26, 2025 · View on GitHub
Этот краткий FAQ отвечает на распространенные вопросы, которые могут возникнуть у разработчиков при использовании AppState.
Как сбросить значение состояния?
Для постоянных состояний, таких как StoredState, FileState и SyncState, вы можете сбросить их до начальных значений, используя статические функции reset для типа Application.
Например, чтобы сбросить StoredState<Bool>:
extension Application {
var hasCompletedOnboarding: StoredState<Bool> { storedState(initial: false, id: "onboarding_complete") }
}
// Где-то в вашем коде
Application.reset(storedState: \.hasCompletedOnboarding)
Это сбросит значение в UserDefaults обратно на false. Аналогичные функции reset существуют для FileState, SyncState и SecureState.
Для непостоянного State вы можете сбросить его так же, как и постоянные состояния:
extension Application {
var counter: State<Int> { state(initial: 0) }
}
// Где-то в вашем коде
Application.reset(\.counter)
Могу ли я использовать AppState с асинхронными задачами?
Да. Значения State и зависимостей являются поточно-безопасными и без проблем работают с Swift Concurrency. Вы можете получать к ним доступ и изменять их внутри функций async без дополнительной блокировки.
Где мне следует определять состояния и зависимости?
Храните все свои состояния и зависимости в расширениях Application. Это обеспечивает единый источник истины и упрощает обнаружение всех доступных значений.
Совместим ли AppState с Combine?
Вы можете использовать AppState вместе с Combine, связывая изменения State с издателями. Наблюдайте за значением State и при необходимости отправляйте обновления через PassthroughSubject или другой издатель Combine.
Этот перевод был сгенерирован автоматически и может содержать ошибки. Если вы носитель языка, мы будем признательны за ваши исправления через Pull Request.