2016-07-22 75 views
1

我有似乎是一个可选名称的字符串名称。我需要将其设置为文本标签。但是,这似乎不像UI中的文本没有设置那样工作。 当我打印出解开的字符串时,看起来很好。 但是,当我将字符串解包到uitextlabel.text并将其打印出来时,它似乎并不好,因为仍然出现关键字可选。 如何正确地将这个字符串解包到uitextlabel.text?如何在UiTextLabel中将可选字符串设置为文本?

var name : String? 

override func viewDidLoad() { 
    super.viewDidLoad() 
    print("School detail view loaded and print address") 


    let rect = view.bounds 

    //set header and footer 
    // schoolNameLabel.text = "set value 1" 
// print(schoolNameLabel.text) 

    if let unwrapped = self.name { 
     print("print unwrapped") 
     print(unwrapped) 

     schoolNameLabel.text = unwrapped 
     print("print label.text") 
     print(schoolNameLabel.text) 

    } 

输出在控制台上:

print unwrapped 
Milner college 

print label.text 
Optional("Milner college") 
+0

控制台中的关键字'Optional'只是说你的对象是一个Optional对象(可以是'nil')。你和它无关。无论什么时候显示这个对象的内容,无论它有没有价值,控制台都会显示:'Optional(“xxxx”)''' –

回答

0
print(schoolNameLabel.text!) //add this ! optional sign.. becuase that textfiled text value may be null 
1
if let unwrapped = self.name! { 

尝试将其保存在展开真正的展开,所以不要错过 “!”

2

你没有必要这样做。我假设你的schoolNameLabelUILabeltextUILabel该场所被声明为:

var text: String? 

UILabel Class Reference

因此,任何非可选String被自动转换为String?。尽管print始终将非零值的“实际内容”包含在“可选”(“&”)中,但UILabel显示其实际内容没有“可选”。

如果“nil”没有显示任何内容,那么您就不需要打开String?

刚分配self.name直接schoolNameLabel.text

schoolNameLabel.text = self.name 

它永远不会崩溃您的应用程序,而只是 “说明不了什么”,即使self.namenil

相关问题