Swift SwiftUI 如何对用户输入进行校验?

24 min read

在SwiftUI中,可以使用TextFieldSecureField等控件获取用户输入,然后使用@State属性包装器将其绑定到变量或属性上。然后,可以使用自定义函数或第三方库来验证用户输入。

以下是一些验证技术:

1.基于正则表达式的验证:使用NSRegularExpression或第三方库Regex.swift等库来编写正则表达式,然后使用matches方法验证输入。

2.使用Binding和自定义函数:可以使用自定义的函数来检查用户输入,然后将其绑定到输入框的Binding属性上,以便在用户输入时实时验证。例如:

struct ContentView: View {
    var body: some View {
        let password = Binding<String>(
            get: { self.password },
            set: {
                self.password = $0
                self.validatePassword()
            }
        )
        return VStack {
            SecureField("Password", text: password)
            Text(self.passwordError)
        }
    }

    @State private var password = ""
    @State private var passwordError = ""

    private func validatePassword() {
        if self.password.count < 8 {
            self.passwordError = "Password must have at least 8 characters"
        } else if !self.password.containsNumber {
            self.passwordError = "Password must contain at least one number"
        } else if !self.password.containsSpecialCharacter {
            self.passwordError = "Password must contain at least one special character"
        } else {
            self.passwordError = ""
        }
    }
}
  1. 使用第三方验证库:可以使用一些第三方库来进行验证,例如Validator.swift,它提供了许多验证规则,例如邮箱、URL、整数、长度等。通过使用这些规则,可以轻松地验证用户输入。

总之,SwiftUI中有许多方法可以对用户输入进行验证。在选择验证技术时,可以根据应用程序的需求和限制来选择最佳解决方案。