로그인 화면 구현하기 v0.2

SignUp & SignIn - 로그인 화면 구현하기 v0.2 (UserDefaults를 활용한 데이터 저장)

SignUp & SignIn & UserDefaults

LoginScreen

회원가입시 UserDefaults를 통해 plist에 유저 데이터 저장하기

@IBAction func signUpBtn(_ sender: UIButton) {
    guard let username = username.text else { return }
    guard let password = password.text else { return }
    guard let conformPwd = conformPwd.text else { return }
    if password == conformPwd {
        // Plist에 파일 넣기 (영구 저장)
        // userList는 dictionary를 담고 있는 배열
        var userList: [[String: String]]
        if let tempList = UserDefaults.standard.array(forKey: "UserList") as? [[String:String]] {
            userList = tempList
        }else {
            userList = []
        }
    
        // userData는 ID와 PWD를 담고있는 dictionary
        let userData: [String:String] = ["ID":username, "PWD":password]
        userList.append(userData)
        UserDefaults.standard.set(userList, forKey: "UserList")
        
        
        // Alert
        let signUpSuccessAlert = UIAlertController(title: "SignUp", message: "회원가입이 완료되었습니다😉", preferredStyle: .alert)
        let okAction = UIAlertAction(title: "OK", style: .default, handler: {
            (alert) in let signInViewController = SignInViewController()
            self.present(signInViewController, animated: true, completion: nil)}
        )
        
        signUpSuccessAlert.addAction(okAction)
        
        self.present(signUpSuccessAlert, animated: true, completion: nil)
    }else {
        // Alert
        let signUpFailedAlert = UIAlertController(title: "SignUp", message: "패스워드가 일치하지 않습니다☹️", preferredStyle: .alert)
        let cancelAction = UIAlertAction(title: "닫기", style: .default, handler: nil)
        signUpFailedAlert.addAction(cancelAction)
        self.present(signUpFailedAlert, animated: true, completion: nil)
    }
}

로그인시 UserDefaults에서 userData 가져와서 회원정보 맵핑하기

func findUser(name: String, password: String) -> Bool {
    guard let userList: [[String:String]] = UserDefaults.standard.array(forKey: "UserList") as? [[String : String]] else { return false }
    UserDefaults.standard.object(forKey: "UserList")
    for userData in userList {
        let memberID: String = userData["ID"]!
        let memberPWD: String = userData["PWD"]!
        if name == memberID && password == memberPWD {
            return true
        }
    }
    return false
}