Часто задаваемые вопросы

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.