Access用于计算的多个函数中的可选属性-Swift



我有一个NSObject子类。说CityWalks

城市步行街{var totalCount:Int?}

如何进一步使用此属性?每次访问该值时,我是否应该检查nil合并。

示例:

设aObject=

比方说,在一个函数(function1())中,我需要访问这个值,然后它会想要(aObject!.totalCount ?? 0)

func function1(){
 ...Some Access code for the object....
 (aObject!.totalCount ?? 0)
}

类似地,在其他每个函数(function2())中,我都必须编写相同的代码。

func function2(){
 ...Some Access code for the object....
 (aObject!.totalCount ?? 0)
}

所以,考虑到这个属性可能从服务器接收值,对于这样的字段,有什么更好的方法呢。

如果您有此属性的默认值,请将该值指定为默认值。

class YourClass {
   var totalCount  = 0
}

如果可能的话,我建议您避免使用可选值。因为当您可能得到错误时,可选值是第一位的。

如注释中所述,在您的情况下,使用可选选项的另一个答案并不是真正的最佳答案。看起来您还不如使用默认值0。

但是,为了澄清,您必须在展开可选项时检查该值。有时可以将一个可选项传递给UIElement等,然后你就不需要对它们做任何事情了

有很多方法可以在swift中内置的可选值中检查nil,因此即使使用可选值,也可以构建非常整洁的代码。

如果您想了解有关安全展开值的更多信息,请参阅guard letif let

如果让

if let totalWalks = aObject?.totalCount {
    //operate on totalWalks
}

保护

guard let totalWalks = aObject?.totalCount else { return }
//operate on totalWalks

也有一些情况下,您希望对可选值调用函数,在这种情况下,可以使用? 进行调用

aObject?.doSomething()

该函数可能具有的任何返回值现在都将封装在可选的中,您可能还必须使用if letguard 来打开它们

当使用选项时,您应该尽量避免使用!强制打开包装,即使您现在知道该值不是null,这可能在代码更改后不再为true。

最新更新