我有字符串名称,似乎是一个可选名称。我需要将其设置为textlabel。但这在某种程度上似乎没有工作,因为在UI中没有设置文本。 当我打印出打开的字符串时,它看起来很好。 但是当我将字符串unwrapped设置为uitextlabel.text并将其打印出来时,它似乎并不好,因为仍然出现关键字optional。 如何正确地将此字符串解包到uitextlabel.text?
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 :(得分:2)
你没有必要这样做。我认为您的schoolNameLabel
是UILabel
。
text
的{{1}}属性声明为:
UILabel
因此,任何非可选var text: String?
都会自动转换为String
。虽然String?
始终使用“可选(”&“)”包含非零值的实际内容,但print
显示的是没有“可选”的实际内容。
如果“UILabel
”在您想要的时候“没有显示”,则无需解开nil
。
直接将String?
分配给self.name
:
schoolNameLabel.text
即使 schoolNameLabel.text = self.name
为self.name
,它也不会使您的应用崩溃,只是“不显示任何内容”。
答案 1 :(得分:1)
if let unwrapped = self.name! {
试着把它保存在未打开的包装中,所以不要错过"!"
答案 2 :(得分:0)
print(schoolNameLabel.text!) //add this ! optional sign.. becuase that textfiled text value may be null