Swift 文本前的快速感叹号

Swift 文本前的快速感叹号,swift,button,uinavigationbar,optional,uibarbuttonitem,Swift,Button,Uinavigationbar,Optional,Uibarbuttonitem,我目前正在学习的这个教程说,我必须禁用“保存”按钮,直到文本字段中有一些值为止。 代码如下: saveButton.isEnabled = !text.isEmpty text.isEmpty前的感叹号是否表示启用了“保存”按钮?如果文本不是空的,则表示!=意思是不等于? 我知道感叹号的意思是强制展开,但我以为你把感叹号放在文本后面了。 顺便说一句(我已经测试过了,它的工作原理与教程中所说的一样)感叹号既是后缀操作符(正如您所说的,是以这种方式使用的强制展开操作符)也是前缀操作符。后者是布尔求

我目前正在学习的这个教程说,我必须禁用“保存”按钮,直到文本字段中有一些值为止。 代码如下:

saveButton.isEnabled = !text.isEmpty
text.isEmpty前的感叹号是否表示启用了“保存”按钮?如果文本不是空的,则表示!=意思是不等于? 我知道感叹号的意思是强制展开,但我以为你把感叹号放在文本后面了。
顺便说一句(我已经测试过了,它的工作原理与教程中所说的一样)

感叹号既是后缀操作符(正如您所说的,是以这种方式使用的强制展开操作符)也是前缀操作符。后者是布尔求反,因此当
text
为空字符串时,
text.isEmpty
为真,并在前面用感叹号求反,得到
!text.isEmpty
为false,禁用保存按钮。

文本前面的感叹号。isEmpty调用运算符,它反转布尔值

saveButton.isEnabled = !text.isEmpty
表示如果
文本
为空,则不会启用
保存按钮
,反之亦然

更清楚地说,如果我们试图将其翻译为if语句,则应为:

if text.isEmpty {
    saveButton.isEnabled = false
} else {
   saveButton.isEnabled = true
}

是的,它作为布尔值的否定。顺便说一句,您也可以使用textField.hasText检查字段是否为空请阅读这相当于说
text.isEmpty==false