0

I have one ObservableObject class for managing login data:

final class LoginData: ObservableObject {

// MARK: - Properties
@Published var otpVerificationType: OTPVerificationType = .mobileNumber
@Published var firstName: String = ""
@Published var mobileNumber: String = ""
@Published var email: String = ""   

}

Once I logout the app, my firstName, email, mobileNumber are filled up. How can I reset my LoginData properties' value to empty?

enter image description here

  • 3
    Just put a function in your class that resets everything to the default. Also, you will be better served putting all of the `LoginData` parameters into their own struct, and just publishing the struct. – Yrb May 10 '22 at 14:47
  • Creating the function worked. Thanks – Mayur Shirsale May 11 '22 at 04:42

1 Answers1

2
struct LoginInfo {
    var otpVerificationType: OTPVerificationType
    var firstName: String
    var mobileNumber: String
    var email: String
    
    init(otpVerificationType: OTPVerificationType = .mobileNumber, firstName: String = "", mobileNumber: String = "", email: String = "") {
        self.otpVerificationType = otpVerificationType
        self.firstName = firstName
        self.mobileNumber = mobileNumber
        self.email = email
    }
}

final class LoginData: ObservableObject {
    // MARK: - Properties
    @Published var loginInfo: LoginInfo?

    // MARK: - setInfo
    func setInfo(_ info: LoginInfo) {
        loginInfo = info
    }

    // MARK: - resetInfo
    func resetInfo() {
        loginInfo = LoginInfo()
    }
}

Then you can reset the info just by triggering the method:

@ObservedObject var loginData = LoginData()

let info = LoginInfo(firstName: "John", mobileNumber: "01XXXXXXXXX")

loginData.setInfo(info)
loginData.resetInfo()
Rabel Ahmed
  • 1,131
  • 13
  • 12