访问多个函数中的可选属性进行计算 - Swift

时间:2015-10-28 06:37:05

标签: ios swift optional null-coalescing

我有一个NSObject子类。说CityWalks

类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)
}

那么,考虑到这个属性可能会从服务器接收一个值,或者可能不会从服务器接收值,这可能是一个更好的方法。

2 个答案:

答案 0 :(得分:0)

如果您具有此属性的默认值,则只需将此值指定为默认值。

class YourClass {
   var totalCount  = 0
}

如果可能的话,我建议您避免使用可选值。因为可选值会在您收到错误时首先出现。

答案 1 :(得分: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,代码更改后可能不再为真。