swift – 为什么编译器告诉我需要解包Bool(非可选?)

swift – 为什么编译器告诉我需要解包Bool(非可选?),第1张

概述根据字符串的 Swift标头 属性isEmpty是Bool(不是可选的权利?) public var isEmpty: Bool { get } 但在我的代码中,当我尝试写: !sender.titleOfSelectedItem?.isEmpty Value of optional type Bool? not unwrapped, did you mean to use “?” or “!” 根据字符串的 Swift标头

属性isEmpty是Bool(不是可选的权利?)

public var isEmpty: Bool { get }

但在我的代码中,当我尝试写:

!sender.TitleOfSelectedItem?.isEmpty

Value of optional type Bool? not unwrapped,dID you mean to use “?”
or “!”

为什么编译器认为isEmpty是可选的?

是因为包含该属性的对象当前是可选的吗?

TitleOfSelectedItem是一个字符串?

或者我完全错过了什么,在这里?

解决方法 sender.TitleOfSelectedItem?.isEmpty是一个可选链,其类型为Bool?因为如果TitleOfSelectedItem为nil,它可以返回nil.

您应该决定如何处理零案例.您可以将可选链与nil合并运算符组合使用?安全地打开结果:

// treat nil as emptylet empty = sender.TitleOfSelectedItem?.isEmpty ?? true

或者您可以将值与false进行比较:

if sender.TitleOfSelectedItem?.isEmpty == false {    // value isn't nil and it isn't empty}

或者您可以将值与true进行比较:

if sender.TitleOfSelectedItem?.isEmpty == true {    // value isn't nil and it is an empty String}
总结

以上是内存溢出为你收集整理的swift – 为什么编译器告诉我需要解包Bool(非可选?)全部内容,希望文章能够帮你解决swift – 为什么编译器告诉我需要解包Bool(非可选?)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1005038.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存