【问题标题】:How to set an optional string as text in UiTextLabel?如何在 UiTextLabel 中将可选字符串设置为文本?
【发布时间】:2016-07-22 10:26:10
【问题描述】:

我有一个似乎是可选名称的字符串名称。我需要将其设置为文本标签。但这似乎不起作用,因为在 UI 中没有设置文本。 当我打印出展开的字符串时,它看起来很好。 但是,当我将解包的字符串设置为 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")

【问题讨论】:

  • 控制台中的关键字Optional只是说你的对象是一个Optional对象(可以是nil)。你与它无关。每当你显示这个对象的内容时,不管它有没有值,控制台都会显示:`Optional("xxxx")``

标签: swift optional word-wrap


【解决方案1】:

你没有必要这样做。我假设您的schoolNameLabelUILabelUILabel 的属性text 声明为:

var text: String?

(UILabel Class Reference)

因此,任何非可选的String 都会自动转换为String?。尽管print 总是用“Optional(” & “)” 将实际内容包含在非零值中,UILabel 显示它的实际内容没有“Optional”。

如果“当nil 不显示任何内容”是你想要的,你就不需要解开String?

只需将self.name 直接分配给schoolNameLabel.text

    schoolNameLabel.text = self.name

即使self.namenil,它也不会让您的应用崩溃,只是“什么都不显示”。

【讨论】:

    【解决方案2】:
    if let unwrapped = self.name! {
    

    尝试将它保存在未包装的状态中,所以不要错过“!”

    【讨论】:

      【解决方案3】:
      print(schoolNameLabel.text!) //add this ! optional sign.. becuase that textfiled text value may be null
      

      【讨论】:

        猜你喜欢
        • 2022-01-06
        • 2020-02-09
        • 2018-03-27
        • 1970-01-01
        • 1970-01-01
        • 2022-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多