为什么(self.account.text?.isEmpty)!需要'!'

时间:2017-09-30 16:00:16

标签: swift optional

    if (self.account.text?.isEmpty)! {


    }

我只是在ViewDidLoad()中写下这个函数。 (帐户是文本字段)

我认为' self.account.text'可以是nil,' self.account.text?'没关系。 但是我不知道为什么&self; .ccount.text?.isEmpty'要求'!' - 展开。

'?self.account.text .isEmpty'是对的,不是吗?

我总是很感激所有答案。

2 个答案:

答案 0 :(得分:2)

这是因为表达式self.account.text?.isEmpty的值为bool或值为nil,您无法使用nil作为如果条件。

在这里使用!是错误的。如果textnil,则代码将崩溃。

而是写:

if self.account.text?.isEmpty == true { ... }
// or equivalently:
if self.account.text?.isEmpty ?? false { ... }

如果您想在textnil时跳过if,或者:

if self.account.text?.isEmpty != false { ... }
// or equivalently:
if self.account.text?.isEmpty ?? true { ... }

如果您想在textnil时输入if。

如果text永远不应该nil,那么您可以在!之后直接使用text

if self.account.text!.isEmpty { ... }

答案 1 :(得分:0)

self.account.text

是可选的布尔值,因此它将是nil或boolean。展开布尔值必须检查它是否等于true或false,就像这样。否则它会因为nil值而崩溃。

import UIKit
var isempty: Bool?

if isempty == true
{
   print("i am empty")
}
else
{
   print("hy i am not empty")
}
//it will print "Hy i am not empty" because isempty has nil