UIlabel文本未显示"可选"设置可选文本时的单词?

时间:2017-02-03 04:56:12

标签: ios swift uilabel

我一直在使用可选项。我已将字符串变量声明为可选

var str: String?

现在我在这个变量中设置了一些值str = "hello"。现在,如果我打印此选项而不打开,则打印为

  

可选("你好&#34)

但是如果我将标签上的文字设置为self.label.text = str,那么它只显示值为

  

您好

请解释为何不在标签上显示文字

  

可选("你好&#34)

2 个答案:

答案 0 :(得分:6)

text的{​​{1}}属性是可选的。 UILabel非常智能,可以检查UILabel属性的值是设置为text还是非零值。如果它不是nil,那么它会显示正确展开的(现在是非可选的)值。

在内部,我认为nil的{​​{1}}方法的代码如下:

drawRect

答案 1 :(得分:0)

我知道我已经看到在UILabel,UITextView,UITextField中打印了可选内容。 Rmaddy的答案令人信服。

很有可能存在内部if let else,因此,如果可选参数具有值,则它将解开包装并显示。如果没有,它将什么也没有显示。

但是有一个陷阱!

let optionalString : String? = "Hello World"

label.text = "\(optionalString)" // Optional("Hello World")
label.text = optionalString // Hello World

let nilOptionalString : String?

label.text = "\(nilOptionalString)" // `nil` would be shown on the screen. 
label.text = nilOptionalString // no text or anything would be shown on the screen . It would be an empty label.

原因是,一旦执行"\(optionalVariable)",它就会进行字符串插值,一旦它是String而不是String?,则将显示插值结果! / p>