【问题标题】:Form validation issue in macOS appmacOS 应用程序中的表单验证问题
【发布时间】:2016-12-14 15:19:49
【问题描述】:

我正在尝试浏览设置表单并确保用户没有将任何必填字段留空。

某些表单字段是安全的(例如密码)。

遍历所有这些字段并检查它们是否为空的最简单方法是什么?

我在下面尝试过 - 但我收到了一个奇怪的错误:

if textfield1.stringValue == "", 
    textfield2.stringValue == "",
    passwordfield.stringValue == "" {
        //Shows error: Braced block of statements is an unused closure
}

此外,我无法将所有这些 NSTextfield 分组到一个数组中,因为密码文本字段是 NSSecureTextField,尽管它是从 NSTextfield 继承的,但不能与 NSTextfield 分组。

【问题讨论】:

    标签: swift macos cocoa swift3


    【解决方案1】:

    可以在同一个数组中拥有NSTextFieldNSSecureTextField。这确实是找到空的一个简单的方法。

    let tf = NSTextField()
    let stf = NSSecureTextField()
    let tf2 = NSTextField()
    tf2.stringValue = "some text"
    
    let all = [tf, stf, tf2]
    
    let emptyTextFields = all.filter { $0.stringValue.isEmpty }
    

    此外,在您的示例中,您不能使用逗号对if 中的条件进行分组,您必须使用&&

    if tf.stringValue.isEmpty && stf.stringValue.isEmpty && tf2.stringValue.isEmpty {
        // do something
    }
    

    但这不是一个好的解决方案,最好使用数组和过滤器。

    【讨论】:

      【解决方案2】:

      在 Swift 2 下,以下是 Eric Aya 正确识别的内容:

          if textfield1.stringValue == "" && textfield2.stringValue == "" &&  == "" {
      
          }
      

      它也可以在 Swift 3 下编译。

      另一方面,您在问题中输入的代码实际上在 Swift 3 中有效。

      【讨论】:

        【解决方案3】:

        使用String对象的isEmpty变量检查空字符串的其他方法。

        let userName = ""
        let email = ""
        
        if(userName.isEmpty && email.isEmpty) {
            print("empty strings")
        }
        else {
            print("good strings")
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-07-30
          • 2017-09-04
          • 1970-01-01
          • 2011-10-31
          • 2014-08-16
          • 2014-11-13
          • 1970-01-01
          相关资源
          最近更新 更多