【问题标题】:conditional binding must have Optional type, not 'String' [duplicate]条件绑定必须具有可选类型,而不是“字符串”[重复]
【发布时间】:2019-08-15 02:03:22
【问题描述】:

我知道 UILabel 的 text 属性是可选的,我尝试添加一个 else 但我不确定还要添加什么。

productData.product.productName 是我从数据库中获取产品的名称

            if var pName = productData.product.productName { //error
              self.productName.text = pName
            }

@IBOutlet weak var pName: UILabel!

条件绑定的初始化程序必须具有可选类型,而不是“字符串”是我得到的错误,它正在工作我想我不确定它哪里出错了

【问题讨论】:

  • 错误很明显。 productData.product.productName 不是可选的。你为什么要打开它?
  • @RakeshaShastri 我正在尝试使用 productName 更新 pName 标签

标签: ios swift


【解决方案1】:

编译器似乎在抱怨productData.product.productName 不是可选的。 if var name = ____ 构造仅适用于 Optionals。

如果您正在测试非空字符串,您可能需要检查 countisEmpty

【讨论】:

    【解决方案2】:

    它指出不需要使用 if 条件,因为 'productName' 不是可选的。

    您可以直接将值添加到标签中。

    self.productName.text = productData.product.productName //Product name is not optional
    

    当您尝试获取可选值时使用可选链。 例如,如果要获取标签的文本,则需要 if 条件。

    if var text = self.productName.text { //Text in label is optional
       print(text)
    }
    

    【讨论】:

    • 那么如何使用 productName 更新标签?
    • 将“productData.product.productName”分配给标签将更新“productName”。
    • 所以我尝试了 pName = productData.product.productName 并且我得到 cannot assign string to UILabel 错误
    猜你喜欢
    • 2016-08-17
    • 2018-11-06
    • 2015-12-22
    • 2015-12-27
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    相关资源
    最近更新 更多