Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct UserSignUp {
- var firstName: String
- var lastName: String?
- var username: String
- var password: String
- class Builder {
- var firstName: String?
- var lastName: String?
- var username: String?
- var password: String?
- var confirmPassword: String?
- func set(firstName: String) -> Builder {
- self.firstName = firstName
- return self
- }
- func set(lastName: String) -> Builder {
- self.lastName = lastName
- return self
- }
- func set(username: String) -> Builder {
- self.username = username
- return self
- }
- func set(password: String) -> Builder {
- self.password = password
- return self
- }
- func set(confirmPassword: String) -> Builder {
- self.confirmPassword = confirmPassword
- return self
- }
- func build() -> UserSignUp? {
- guard let firstName = firstName, !firstName.isEmpty else {
- return nil
- }
- // last name not required, so don't unwrap
- guard lastName?.isEmpty ?? true else {
- return nil
- }
- guard let username = username, !username.isEmpty else {
- return nil
- }
- guard let password = password, password.characters.count >= 4 else {
- return nil
- }
- guard let confirmPassword = confirmPassword, confirmPassword == password else {
- return nil
- }
- return UserSignUp(firstName: firstName, lastName: lastName, username: username, password: password)
- }
- }
- }
- // USAGE
- let user: User? = User.Builder()
- .set(firstName: "Matt")
- .set(lastName: "Hoffman")
- .set(username: "muuhoffman")
- .set(password: "foo")
- .set(confirmPassword: "foo")
- .build()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement