Textfield 甚至是空的,但在 Swift 中不认为是空的

Posted

技术标签:

【中文标题】Textfield 甚至是空的,但在 Swift 中不认为是空的【英文标题】:Textfield is even empty but not considering as empty in Swift 【发布时间】:2020-05-12 10:18:56 【问题描述】:

我有多个文本字段,如果所有字段都已填满,那么我只需调用一些方法,否则我必须发出警报。

但是,即使文本字段为空,执行条件为假。

if genderTextField.text?.isEmpty == true && weightTextField.text?.isEmpty == true && heightTextField.text?.isEmpty == true 
                self.showAlert(withTitle:"Title", withMessage: "Fill all the fields")

 else 
 //call some function

但是,如果我打印文本字段文本

po genderTextField.text
▿ Optional<String>
  - some : ""

有什么建议吗?

【问题讨论】:

如果你想检查是否所有的TextFields都被填满,你应该使用OR 你的逻辑一开始就错了。 - 你想要||(或)不想要 - 如果任何字段为空,你想要警报。您也可以省略 == true,因为 isEmpty 是一个布尔值。我建议您通过零合并运算符 if (genderTextField.text ?? "").isEmpty ... 正确处理 nil 【参考方案1】:

Swift 5.2

一个更优雅的方法是在UITextField上创建一个扩展

extension UITextField 
    var isEmpty: Bool 
        if let text = self.text, !text.isEmpty 
            return false
         else 
            return true
        
    


然后你像这样检查:

if genderTextField.isEmpty || weightTextField.isEmpty || heightTextField.isEmpty 
    showAlert()
 else 
    // do something else

【讨论】:

以上是关于Textfield 甚至是空的,但在 Swift 中不认为是空的的主要内容,如果未能解决你的问题,请参考以下文章

如何让 inputRef 从 <Textfield> 返回 <input> 元素?尝试了我能想到的一切,它仍然是空的

Swift - 即使在填充数据后数组似乎也是空的

WSO2 - 如何让调用中介忽略有效负载(比如它是空的,甚至不是空的)?

从用户窗体到模块的公共数组是空的,但在用户窗体内部它获取值

斯威夫特:UIActivityViewController 是空的

我的 httpd.conf 是空的