swift - macOS 应用程序中的表单验证问题

标签 swift macos cocoa swift3

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

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

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

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

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

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

最佳答案

可以在同一个数组中包含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
}

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

关于swift - macOS 应用程序中的表单验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41146090/

相关文章:

swift - 如何增加 NSStatusBar 图像大小?

ios - 如何迁移未存储的 Realm 对象?

ios - 如何从 iOS Swift 中的框架中关闭相机 Controller ?

swift - 您如何在共享框架中为 XCTest 创建公共(public)扩展?

macos - 创建独立 Mac OS X perl 应用程序的最简单方法

linux - vagrant 在 mac 的 debian VM 上设备上没有剩余空间

ios - 将 CATextLayer 字体转换为 UIFont

linux - Git : mysterious changes cannot be undone 的奇怪行为

objective-c - cocoa中文件路径拖放的实现细节

objective-c - 找不到 applicationSupportDirectory?