我有一个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 let
和if let
。
如果让
if let totalWalks = aObject?.totalCount {
//operate on totalWalks
}
保护
guard let totalWalks = aObject?.totalCount else { return }
//operate on totalWalks
也有一些情况下,您希望对可选值调用函数,在这种情况下,可以使用?
进行调用
aObject?.doSomething()
该函数可能具有的任何返回值现在都将封装在可选的中,您可能还必须使用if let
或guard
来打开它们
当使用选项时,您应该尽量避免使用!
强制打开包装,即使您现在知道该值不是null,这可能在代码更改后不再为true。