iOS:使用凭据在swift中创建结构

时间:2016-07-10 08:52:43

标签: ios swift struct ios9

我必须创建一个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
}

但我有一些问题:

  • 如何在结构中传递emailTextFieldpasswordTF的值?使用init方法?
  • 并且最好在struct中使用var或let,或者在结构中只有一个方法也是个好主意吗?

感谢

2 个答案:

答案 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。

然而,说这一切我建议把这个函数直接放到你的类中,而不是结构中。只需将值作为参数传递。