在Apple Swift中,在什么情况下我不想要一个隐式解包的可选项?

Pte*_*ple 6 optional ios swift ios8

我相信我理解为什么选项是方便的(我最好的想法是能够返回一个nil布尔值),但在什么情况下我想声明一个包装的可选使用?而不是 !对于隐式展开的可选项.

它似乎没有必要用它来声明它?然后必须打字!到处都是,而不仅仅是使用!一旦.

我不想无视?虽然没用,但我找不到它的用途......任何想法?

ric*_*ter 6

如果您尝试访问隐式解包的可选项的内容,并且那里没有任何内容,您的应用程序将崩溃.

如果您使用模式检查可选内容(如可选绑定和可选链接),则可以控制应用程序在不可预见的情况下如何正常失败.并且它不会使您的代码变得更复杂.

不崩溃对我来说似乎是一个很好的理由.

  • @Ptemple因为崩溃,我想说更好的问题是****你想要使用隐式解包的选项.有一些特定的用例,最明显的是在与Objective-C API交互时,除此之外,我会避免使用它们. (3认同)

Kri*_*lci 6

先说说点是什么?很快.您可以创建一个看起来像这样的var.

var number : Int?
Run Code Online (Sandbox Code Playgroud)

你基本上是说这个变量有可能是零.如果某个对象有可能是零,那么你就不想做这样的事情了.

var secondNumber = number! + 5
Run Code Online (Sandbox Code Playgroud)

基本上在你所说的这个陈述中,这个变量有可能是零,但是,我将完全忽略这个事实并假装它没有办法可以为零.

相反,您需要先检查该变量是否存在,然后再进行设置

var number : Int?
var number2 : Int?

number = 10

if let unwrappedNumber = number {
    number2 = unwrappedNumber + 5
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!