我必须创建一个struct
来检查两个UITextField是否有效。
我的想法是,这是一个创建结构的好方法吗?
struct Credentials{
func isCorrect() -> Bool {
guard let username = emailTF.text else {
return false
}
guard let password = passwordTF.text else {
return false
}
return true
}
但我有一些问题:
emailTextField
和passwordTF
的值?使用init方法?感谢
答案 0 :(得分:1)
你可以像这样创建一个结构
struct Credentials {
let email: String
let password: String
init?(email:String?, password: String?) {
guard let email = email, password = password else { return nil }
self.email = email
self.password = password
}
var correct: Bool {
// do your check
guard email.isEmpty == false && password.isEmpty == false else { return false }
return true
}
}
正如您所看到的,correct
是一个计算属性,非函数,因为它不需要任何参数。
let correct = Credentials(email: emailTF.text, password: passwordTF.text)?.correct == true
答案 1 :(得分:0)
结构与类大致相同。它们可以有变量而不像类,如果有明确给定值的变量,swift将自动创建初始化器。你会做这样的事情。
let myStruct = Credentials(emailTF: "something", passwordTF: "something")
print(myStruct.isCorrect())
该函数将像类一样使用let和var。
然而,说这一切我建议把这个函数直接放到你的类中,而不是结构中。只需将值作为参数传递。