Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 验证文本字段swift 3_Ios_Uitextfield_Swift3 - Fatal编程技术网

Ios 验证文本字段swift 3

Ios 验证文本字段swift 3,ios,uitextfield,swift3,Ios,Uitextfield,Swift3,我正在尝试使我的所有文本字段都是必需的,以确保用户不会将其保留为空。我试过了,但由于某种原因它不起作用。我觉得我的逻辑是正确的,但这是斯威夫特逻辑的问题 这是我的密码: let title = txtTitle.text! let location = txtWhere.text! let when = txtWhen.text! if title != nil && location != nil && when != nil {

我正在尝试使我的所有文本字段都是必需的,以确保用户不会将其保留为空。我试过了,但由于某种原因它不起作用。我觉得我的逻辑是正确的,但这是斯威夫特逻辑的问题

这是我的密码:

let title = txtTitle.text!
let location = txtWhere.text!
let when = txtWhen.text!


    if title != nil && location != nil && when != nil {

        var titleArray = [String]()
        var whereArray = [String]()
        var whenArray = [String]()

        let titleObject = UserDefaults.standard.object(forKey: "saveTitle")
        let whereObject = UserDefaults.standard.object(forKey: "saveLocation")
        let whenObject = UserDefaults.standard.object(forKey: "saveWhen")




        if let tempTitle = titleObject as? [String] {

            titleArray = tempTitle
            titleArray.append(txtTitle.text!)
            print(titleArray)

        }
        else {

            titleArray = [txtTitle.text!]

        }

        if let tempWhere = whereObject as? [String] {

            whereArray = tempWhere
            whereArray.append(txtWhere.text!)
            //print(titleArray)

        }
        else {

            whereArray = [txtWhere.text!]

        }

        if let tempWhen = whenObject as? [String] {

            whenArray = tempWhen
            whenArray.append(txtWhen.text!)
            //print(titleArray)

        }
        else {

            whenArray = [txtWhen.text!]

        }


        UserDefaults.standard.set(titleArray, forKey: "saveTitle")
        UserDefaults.standard.set(whereArray, forKey: "saveLocation")
        UserDefaults.standard.set(whenArray, forKey: "saveWhen")
        txtTitle.text = ""
        txtWhere.text = ""
        txtWhen.text = ""
        txtTime.text = ""

    }
        else
    {

        errMsg.isHidden = false
        errMsg.text = "All fields are required"

    }
}

a。您不应该强制展开(
txtitle.text!
):而是检查可选值

b。您可能希望检查空字符串,而不仅仅是检查
nil

也就是说,您可以像这样测试有效性:

let title = txtTitle.text
if title?.isEmpty == false {
    ...// title was filled
}
或者更好(谢谢利奥·达布斯):


a。您不应该强制展开(
txtitle.text!
):而是检查可选值

b。您可能希望检查空字符串,而不仅仅是检查
nil

也就是说,您可以像这样测试有效性:

let title = txtTitle.text
if title?.isEmpty == false {
    ...// title was filled
}
或者更好(谢谢利奥·达布斯):


要可靠地检查文本字段的
text
属性是否不是
nil
且不是空的,请使用

if let title = txtTitle.text, !title.isEmpty,
   let location = txtWhere.text, !location.isEmpty,
   let when = txtWhen.text, !when.isEmpty { ...

如果所有条件均已通过,则三个变量将安全展开。

要可靠地检查文本字段的
文本属性是否为非
nil
且不为空,请使用

if let title = txtTitle.text, !title.isEmpty,
   let location = txtWhere.text, !location.isEmpty,
   let when = txtWhen.text, !when.isEmpty { ...
如果所有条件均通过,则三个变量将安全展开。

TEXTFIELD VALIDATION ============================>

func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
    switch (textField.tag)
    {
    case 1:

        password.becomeFirstResponder()

    case 2 :

        confirm_pass.becomeFirstResponder()

    case 3 :

        email.becomeFirstResponder()

    case 4 :

        phone.becomeFirstResponder()

    case 5 :

        phone.resignFirstResponder()

    default: break
    }
    return true

}

func textFieldShouldClear(_ textField: UITextField) -> Bool
{
    return true
}


func textFieldDidEndEditing(_ textField: UITextField)
{
    if (textField == username)
    {
        let name_reg = "[A-Za-z0-9]{5,20}"

        let name_test = NSPredicate(format: "SELF MATCHES %@", name_reg)

        if name_test.evaluate(with: username.text) == false
        {
            let alert = UIAlertController(title: "Information", message: "Enter the name in correct format", preferredStyle: .alert)
            let ok = UIAlertAction(title: "Ok", style: .default, handler: nil)
            let cancel = UIAlertAction(title: "Cancel", style: .default, handler: nil)

            alert.addAction(ok)
            alert.addAction(cancel)

            self.present(alert, animated: true, completion: nil)
        }
    }

    if (textField == password)
    {
        let name_reg = "[A-Z0-9a-z._%@+-]{6,10}"

        let name_test = NSPredicate(format: "SELF MATCHES %@", name_reg)

        if name_test.evaluate(with: password.text) == false
        {
            let alert = UIAlertController(title: "Information", message: "Enter the password in correct format", preferredStyle: .alert)
            let ok = UIAlertAction(title: "Ok", style: .default, handler: nil)
            let cancel = UIAlertAction(title: "Cancel", style: .default, handler: nil)

            alert.addAction(ok)
            alert.addAction(cancel)

            self.present(alert, animated: true, completion: nil)
        }
    }

    if (textField == email)
    {
        let name_reg = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

        let name_test = NSPredicate(format: "SELF MATCHES %@", name_reg)

        if name_test.evaluate(with: email.text) == false
        {
            let alert = UIAlertController(title: "Information", message: "Enter the E-mail in correct format", preferredStyle: .alert)
            let ok = UIAlertAction(title: "Ok", style: .default, handler: nil)
            let cancel = UIAlertAction(title: "Cancel", style: .default, handler: nil)

            alert.addAction(ok)
            alert.addAction(cancel)

            self.present(alert, animated: true, completion: nil)
        }
    }

    if (textField == phone)
    {
        let name_reg = "[0-9]{10}"

        let name_test = NSPredicate(format: "SELF MATCHES %@", name_reg)

        if name_test.evaluate(with: phone.text) == false
        {
            let alert = UIAlertController(title: "Information", message: "Enter your number in correct format", preferredStyle: .alert)
            let ok = UIAlertAction(title: "Ok", style: .default, handler: nil)
            let cancel = UIAlertAction(title: "Cancel", style: .default, handler: nil)

            alert.addAction(ok)
            alert.addAction(cancel)

            self.present(alert, animated: true, completion: nil)
        }
    }

}
文本字段验证 ============================>

func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
    switch (textField.tag)
    {
    case 1:

        password.becomeFirstResponder()

    case 2 :

        confirm_pass.becomeFirstResponder()

    case 3 :

        email.becomeFirstResponder()

    case 4 :

        phone.becomeFirstResponder()

    case 5 :

        phone.resignFirstResponder()

    default: break
    }
    return true

}

func textFieldShouldClear(_ textField: UITextField) -> Bool
{
    return true
}


func textFieldDidEndEditing(_ textField: UITextField)
{
    if (textField == username)
    {
        let name_reg = "[A-Za-z0-9]{5,20}"

        let name_test = NSPredicate(format: "SELF MATCHES %@", name_reg)

        if name_test.evaluate(with: username.text) == false
        {
            let alert = UIAlertController(title: "Information", message: "Enter the name in correct format", preferredStyle: .alert)
            let ok = UIAlertAction(title: "Ok", style: .default, handler: nil)
            let cancel = UIAlertAction(title: "Cancel", style: .default, handler: nil)

            alert.addAction(ok)
            alert.addAction(cancel)

            self.present(alert, animated: true, completion: nil)
        }
    }

    if (textField == password)
    {
        let name_reg = "[A-Z0-9a-z._%@+-]{6,10}"

        let name_test = NSPredicate(format: "SELF MATCHES %@", name_reg)

        if name_test.evaluate(with: password.text) == false
        {
            let alert = UIAlertController(title: "Information", message: "Enter the password in correct format", preferredStyle: .alert)
            let ok = UIAlertAction(title: "Ok", style: .default, handler: nil)
            let cancel = UIAlertAction(title: "Cancel", style: .default, handler: nil)

            alert.addAction(ok)
            alert.addAction(cancel)

            self.present(alert, animated: true, completion: nil)
        }
    }

    if (textField == email)
    {
        let name_reg = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

        let name_test = NSPredicate(format: "SELF MATCHES %@", name_reg)

        if name_test.evaluate(with: email.text) == false
        {
            let alert = UIAlertController(title: "Information", message: "Enter the E-mail in correct format", preferredStyle: .alert)
            let ok = UIAlertAction(title: "Ok", style: .default, handler: nil)
            let cancel = UIAlertAction(title: "Cancel", style: .default, handler: nil)

            alert.addAction(ok)
            alert.addAction(cancel)

            self.present(alert, animated: true, completion: nil)
        }
    }

    if (textField == phone)
    {
        let name_reg = "[0-9]{10}"

        let name_test = NSPredicate(format: "SELF MATCHES %@", name_reg)

        if name_test.evaluate(with: phone.text) == false
        {
            let alert = UIAlertController(title: "Information", message: "Enter your number in correct format", preferredStyle: .alert)
            let ok = UIAlertAction(title: "Ok", style: .default, handler: nil)
            let cancel = UIAlertAction(title: "Cancel", style: .default, handler: nil)

            alert.addAction(ok)
            alert.addAction(cancel)

            self.present(alert, animated: true, completion: nil)
        }
    }

}

试试这个,例如
txtitle.text?.characters.count>0
。请重构你的代码。。请注意强制展开的选项@ThomasG.,如果您使用,它将不鼓励将
计数
与0进行比较,并建议
isEmpty
;)试试这个,例如
txtitle.text?.characters.count>0
。请重构你的代码。。请注意强制展开的选项@ThomasG.,如果您使用,它将不鼓励将
计数
与0进行比较,并建议
isEmpty
;)<代码>如果让title=txtitle.text!title.isEmpty{
如果让title=txtTitle.text,!title.isEmpty{
欢迎来到Stackoverflow。虽然这个答案可能是正确的,但从长远来看,留下一些解释会改善这个问题。欢迎来到Stackoverflow。虽然这个答案可能是正确的,但留下一些解释会改善这个问题。