인프런 커뮤니티 질문&답변

cha3088님의 프로필 이미지
cha3088

작성한 질문수

SwiftUI의 Property Wrapper(@State, @Binding...)

6강 - @EnvironmentObject

안녕하세요 @EnvironmentObject를 RequestInterceptor에서도 사용할 수 있나요?

해결된 질문

작성

·

284

0

안녕하세요.

이 부분을 듣다가 궁금한게 생겨서 질문드립니다.

제 프로젝트에서 Alamofire를 사용 중인데 RequestInterceptor를 활용해서 JWT 관리 로직을 다루려고 하고 있습니다.

궁금한 점은 로직 중에 JWT가 만료되거나 사라지면, 로그인/회원가입 뷰로 돌아가게 만들고 싶은데 RequestInterceptor에서 EnvironmentObject를 접근해서 변경할 수 있나요?

변경할 수 없다면, 어떤 방식을 사용하면 JWT가 변경됐을 때 뷰를 다시 그릴 수 있을까요?

답변 1

1

애구마(agmma)님의 프로필 이미지
애구마(agmma)
지식공유자

안녕하세요

말씀해주신 부분 고민해서 예제 코드를 한번 만들어봤는데요.

 

import SwiftUI

 

struct ContentView: View {

  @AppStorage("login") var 로그인여부: Bool = false

  

  var body: some View {

    ZStack {

      if 로그인여부 {

        로그인되었을때 뷰()

      } else {

        로그인안되었을때 뷰(회원가입 등)()

      }

    }

  }

}

 

 

struct 로그인되었을때 뷰: View {    //다른 화면

    @AppStorage("login") var 로그인여부: Bool = true

    ...

}

 

 

이런식으로 ZStack으로 if문에따라 뷰를 2개 만들어놓고, 로그인여부 변수에 true, false 값에 따라 뷰를 나타내게 만들 수 있습니다.

 

AppStorage는 어느 화면에서나 접근할 수 있기 때문에 쉽게 변경가능하고요.

 

혹은 다른 방법으로는 notification center를 이용하는 방식도 있습니다.

UIKit에서는 보통 로그인 여부에 따라 특정 화면이나 동작이 수행되어야 할때, notification center를 많이 씁니다.

감사합니다

cha3088님의 프로필 이미지
cha3088
질문자

@AppStorage라는게 있군요!

예제 코드까지 정말 감사합니다!

강의 잘 들었습니다!

cha3088님의 프로필 이미지
cha3088

작성한 질문수

질문하기