簡體   English   中英

Swift-展開UILabel.text

[英]Swift - unwrap UILabel.text

   let myLabel:UILabel = UILabel(frame:CGRectMake(0, 0, 44, 44))
   myLabel.text = "Primary"                
   print(myLabel.text)

結果是:

可選(“第一”)

我可以執行print(myLabel.text!),但這是強制打開Optional包裝的好習慣嗎?

您可以只使用nil-coalescing運算子

let myLabel:UILabel = UILabel(frame:CGRectMake(0, 0, 44, 44))
myLabel.text = "Primary"
print(myLabel.text ?? "")

操場很適合解決這些問題。

在此處輸入圖片說明

對於您的代碼來說沒關系,因為您實際上知道自己設置了一些文本。 但是通常您應該執行以下操作:

if let text = myLabel.text {
   print(text)
}

僅當文本存在時,才會打印文本。

如果您使用的是Swift 2:

func print(){
    guard let text = myLabel.text else {
    return 
   }  
  print(text); 
 }

對於Swift <2

if let text = myLabel.text {
print(text) 
}

要回答您的問題:

最好檢查可選參數是否不為null。 因為如果您不這樣做,並且它為null,則您的應用程序將崩潰。 通常我用if讓我們檢查一下...

var userInput

func doSth(){
//do Sth
if let _ = myLabel.text {
userInput = myLabel.text 
} else {
myLabel.text = "Welcome" 
}
//do Sth 
} 

您可以使用nil-coalescing運算符。 基本上,這是一種輕松返回未包裝的可選值或默認值的方法。

let myLabel:UILabel = UILabel(frame:CGRectMake(0, 0, 44, 44))
myLabel.text = "Primary"
var text:String? = myLabel.text ?? nil
print("\(text)")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM