Crash in SwiftUI App using Combine (was: Using @Published in conjunction with @State in SwiftUI)

Hi,
After several hours trial & error solution is just add below 1 line. Debugging is going to be nightmare.

        .receive(on: RunLoop.main) // run on main thread 

Inside validatedCredentials

var validatedCredentials: AnyPublisher<(String, String)?, Never> {
    return Publishers.CombineLatest(validatedEMail, validatedPassword)

        .receive(on: RunLoop.main) // <<—— run on main thread

        .map { validatedEMail, validatedPassword in
            print("validatedEMail: \(validatedEMail ?? "not set"), validatedPassword: \(validatedPassword ?? "not set")")
         
            guard let eMail = validatedEMail, let password = validatedPassword else { return nil }
            
            return (eMail, password)
            
    }
    .eraseToAnyPublisher()
}

Learn’t a lot. Nanu Jogi

3 Likes