iOS:在 swift 中使用凭据创建一个结构
iOS: create a struct in swift with credentials
我必须创建一个 struct
来检查两个 UITextField 是否有效。
而我的想法是这样的,这样创建一个struct是不是一个好方法?
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
的值?使用初始化方法?
- 在结构内部有一些 var 或 let 更好,还是在结构内部只有一个方法也是个好主意?
谢谢
结构的工作原理与 classes 大致相同。它们可以有变量,并且与 classes 不同,如果存在未显式给定值的变量,swift 将自动创建初始化程序。你会做这样的事情。
let myStruct = Credentials(emailTF: "something", passwordTF: "something")
print(myStruct.isCorrect())
该函数将像 class 一样使用 let 和 var。
但是,综上所述,我建议将此函数直接放入您的 class,而不是放在结构中。只需将值作为参数传递即可。
你可以像这样创建一个结构
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
我必须创建一个 struct
来检查两个 UITextField 是否有效。
而我的想法是这样的,这样创建一个struct是不是一个好方法?
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
的值?使用初始化方法? - 在结构内部有一些 var 或 let 更好,还是在结构内部只有一个方法也是个好主意?
谢谢
结构的工作原理与 classes 大致相同。它们可以有变量,并且与 classes 不同,如果存在未显式给定值的变量,swift 将自动创建初始化程序。你会做这样的事情。
let myStruct = Credentials(emailTF: "something", passwordTF: "something")
print(myStruct.isCorrect())
该函数将像 class 一样使用 let 和 var。
但是,综上所述,我建议将此函数直接放入您的 class,而不是放在结构中。只需将值作为参数传递即可。
你可以像这样创建一个结构
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