什么时候我应该将一个可选的值与零进行比较?

什么时候我应该将一个可选的值与零进行比较?

通常,您需要编写如下代码:

if someOptional != nil {
    // do something with the unwrapped someOptional e.g.       
    someFunction(someOptional!)}

这似乎有点冗长,而且我还听说使用!强制展开操作符可能是不安全的,最好避免。有更好的方法来处理这件事吗?


守着星空守着你
浏览 473回答 3
3回答

慕姐8265434

我认为你应该回到SWIFT编程书,了解这些东西是干什么用的。!在绝对确定可选项不是零时使用。既然你宣称你是绝对肯定的,如果你错了,它就会崩溃。完全是故意的。它是“不安全的和最好的避免”,在您的代码中断言是“不安全的和最好的避免”。例如:if someOptional != nil {     someFunction(someOptional!)}那个!绝对安全。除非您的代码有一个很大的错误,比如错误地编写(我希望您发现了错误)。if someOptional != nil {     someFunction(SomeOptional!)}在这种情况下,您的应用程序可能崩溃,您调查它崩溃的原因,并修复错误-这正是崩溃的目的。SWIFT的一个目标是,您的应用程序显然应该正确工作,但由于SWIFT不能强制执行,它强制您的应用程序要么工作正常,要么崩溃,如果可能的话,所以错误会在应用程序发布之前被删除。

潇湘沐

你有一个办法。它叫做可选链..来自文件:可选链接是用于查询和调用当前可能为零的可选项的属性、方法和下标的进程。如果可选项包含值,则属性、方法或下标调用将成功;如果可选项为零,则属性、方法或下标调用返回nil。多个查询可以链接在一起,如果链中的任何链接为零,则整个链将优雅地失败。下面是一些例子class Person {     var residence: Residence?}class Residence {     var numberOfRooms = 1}let john = Person()if let roomCount = john.residence?.numberOfRooms {     println("John's residence has \(roomCount) room(s).")} else {     println("Unable to retrieve the number of rooms.")}// prints "Unable to retrieve the number of rooms."你可以查看整篇文章这里.
打开App,查看更多内容
随时随地看视频慕课网APP