2
struct ContentView: View {
    @State var manager = HtpAuth()
    
    var body: some View {
    
        if manager.authenticated {
            Text("Login Successful!!")
        }

        // 2 textfields for username and password and 
        // a login button to call checkForAuth function
        //...
    }
}

class HttpAuth: ObservableObject {
    var didChange = PassthroughSubject<HttpAuth, Never>()

    var authenticated = false {
        didSet {
            didChange.send(self)
        }
    }

    func checkForAuth(username: String, password: String) {

        //REST API call
        URLSession.shared.data.task(with: loginRequest) { data, response, error in 
            guard let data = data else { return }
            let finalData = try! JSONDecoder().decode(ServerMessage.self, from: data)
    
            DispatchQueue.main.async {
                self.authenticated = true
            }
        }.resume()
    }
}

サーバーから応答があります。しかし、応答を受け取った後、メインスレッドに戻って別のビューを表示したいと思います。この目的で使用DispatchQueue.main.asyncしていますが、機能しません。ラベル「ログイン成功!!」ログインに成功した後は表示されません。

4

1 に答える 1