gpt4 book ai didi

ios - 了解 Swift 2.0 中的Optional

转载 作者:行者123 更新时间:2023-11-30 13:40:06 25 4
gpt4 key购买 nike

我无法理解应该如何使用可选变量。我是否必须在所有代码中检查 nil 以防止崩溃?例如,使用此代码

   let pubHead = "Publisher: "
if let pubName : String? = self.book?.publisher {
self.publisherLabel?.text = pubHead+pubName!
}

book.publisher 变量是可选的,因此它可能为零,也可能不为零,当它不为零时,此代码工作得很好,字符串被附加并设置为标签的文本。但是,当它为零时,我会收到 fatal error 。我是否真的需要在所有代码中检查 nil 以防止在与此类似的情况下发生崩溃。如果是这样,检查 nil 的正确方法是什么?

最佳答案

为了解释您所看到的错误,if let构造具有以下语法

if let (x: Type) = (expression of Type?)

这意味着如果你想检查是否 String?nil ,您将有String在左侧(左侧不再是可选的)。

但是,如果您写 String?在左侧,右侧的表达式被推断为 String?? .

换句话说,self.book?.publisher类型为String? ( Optional<String> ) 但将其放入:

if let pubName : String? = self.book?.publisher {

它将变成String?? (Optional<Optional<String>>)。

if let然后正确删除一级可选,您将得到 String? .

显然,你想要的是

if let pubname: String = self.book?.publisher

或者让类型被推断

if let pubname = self.book?.publisher

关于ios - 了解 Swift 2.0 中的Optional,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35679149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com