如果在 Swift 中满足条件,则保存 TextField 输入的最佳方法

Mar*_*rta 0 string if-statement textfield ios swift

我有 2 个带有表示 URL 的字符串的文本字段。如果 textfield 为空,则保存自定义字符串(“无链接 A”),如果填充,则需要有效,否则显示警报。

有没有更简洁的方法来做到这一点,而不是使用这么多的“if 语句”?

linkA = linkATextField.text      
linkB = linkBTextField.text

     @IBAction func doneButton(_ sender: Any) {

            if linkA.isEmpty && linkB.isEmpty {
                linkA = "no link A"
                linkB = "no link B"
                saveData()
            } else {
                if linkA.isEmpty == false && linkB.isEmpty == false  {
                    if linkA.isValidURL && linkB.isValidURL {
                         saveData()
                    } else {
                        showErrorAlert()
                    }
                }
                if linkA.isEmpty && linkB.isEmpty == false {
                    linkA = "no link A"
                    if linkB.isValidURL {
                         saveData()
                    } else {
                        showErrorAlert()
                    }
                }
                if linkA.isEmpty == false && linkB.isEmpty {
                    linkB = "no link B"
                    if linkA.isValidURL {
                         saveData()
                    } else {
                        showErrorAlert()
                    }
                }
            }

        }
Run Code Online (Sandbox Code Playgroud)

Anb*_*hik 5

或者你可以使用 Switch case ,试试这个

 @IBAction func doneButton(_ sender: Any){
        switch (linkA.isEmpty, linkB.isEmpty) {
        case (true, true):
            // no link A, B
             saveData()
            break
          case (false, false):
             // no link A, B
             if linkA.isValidURL, linkB.isValidURL {
                 saveData()
              }else { showErrorAlert() }
            break
             case (true, false):
              // no link A
            linkB.isValidURL  ? saveData() : showErrorAlert()
            break
            case (false, true):
             // no link B
            linkA.isValidURL  ? saveData() : showErrorAlert()
            break
        default:
           showErrorAlert()
             break
        }
    }
Run Code Online (Sandbox Code Playgroud)