Как поделиться текущим состоянием пользователя между представлениями?IOS

Программируем под IOS
Ответить
Anonymous
 Как поделиться текущим состоянием пользователя между представлениями?

Сообщение Anonymous »

Я новичок в Swiftui и пытаюсь понять лучший способ поделиться аутентифицированным пользовательским состоянием (

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

AuthSession
) по представлениям.
После входа я получаю токен и текущего пользователя, затем вызов:

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

authSession.login(user: user, token: token)
< /code>
authSession
- это наблюдаемый объем, который вводится через @environmentobject .

Я хочу использовать authsession.currentuser в других представлениях, но я сталкиваюсь с проблемами, когда пытаюсь использовать его в init () для инициализации @StateObjectObjectObjectOBjectOBjectObjectOBjectOBjectObject> PESIVE> PESICTOBJectOBjectOBjectOBjectObjectOBjectOBjectOBjectOBjectOBjectOBjectOBjectOBjectObject. /> Например: < /p>

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

@EnvironmentObject var authSession: AuthSession
@StateObject private var viewModel = FeedViewModel(user: authSession.currentUser!) // ❌ Error
< /code>
This forces me to defer initialization using .onAppear
, что похоже на обходной путь:

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

@State private var viewModel: FeedViewModel?

.onAppear {
if viewModel == nil {
viewModel = FeedViewModel(user: authSession.currentUser!)
}
}
< /code>

 Что я хочу: < /h3>
[list]
[*] Поделиться Authsession < /code> по приложению < /li>
 Инициализировать ViewModels, которые зависят от него (например, необходимо < /code> или пользователь < /code>) < /li>                                  . .onapear 
[/list]

Вопрос:
Как я могу чисто поделиться Authsession и использовать его для инициализации ViewModels без .onapear Hacks?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... ween-views
Ответить

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

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

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

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

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