加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 如何解决“字符串插值产生可选值的调试描述;你是否意味

发布时间:2020-12-14 05:51:20 所属栏目:百科 来源:网络整理
导读:自从beta 8.3以来,数百万条警告“字符串插值产生一个可选值的调试描述;你是否意味着使这个显式?出现在我的代码中。 例如,警告弹出以下情况,选项可能导致零: let msg = "*** Error (options["taskDescription"]): cannot load (sUrl) (error)" 如以前
自从beta 8.3以来,数百万条警告“字符串插值产生一个可选值的调试描述;你是否意味着使这个显式?出现在我的代码中。

例如,警告弹出以下情况,选项可能导致零:

let msg = "*** Error (options["taskDescription"]): cannot load (sUrl) (error)"

如以前设计的那样,对于我(和编译器),可选项被内插为“nil”。但是编译器改变了主意。

编译器建议添加一个带有描述的String构造函数,如下所示:

let msg = "*** Error (String(describing: options["taskDescription"])): cannot load (sUrl) (error)"

显然,结果是明确的,但在我看来也非常麻烦。有更好的选择吗?我必须修复所有这些警告,或者更好地等待下一个测试版?

这是07-07中发生的一个变化,因为将可选(…)内插到合成字符串中的情况通常是不希望的,并且可能特别令人惊讶 in cases with implicitly unwrapped optionals.您可以在邮件列表 here上查看对此更改的全面讨论。

如在拉请求讨论中所提到的(尽管不幸的是不是通过Xcode) – 一个比使用String(描述:)更安静一点的方法是将一个转换添加到可插入的任何内容中,因此,例:

var i: Int? = 5
var d: Double? = nil

print("description of i: (i as Int?)")    // description of i: Optional(5)
print("description of d: (d as Double?)") // description of d: nil

哪个也可以推广为可选:

print("description of i: (i as Optional)") // description of i: Optional(5)
print("description of d: (d as Optional)") // description of d: nil

另一种可能的方法是静默警告是访问可选的debugDescription:

print("description of i: (i.debugDescription)") // description of i: Optional(5)
print("description of d: (d.debugDescription)") // description of d: nil

虽然值得注意的是,CustomDebugStringConvertible的文档不鼓励直接访问debugDescription。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读