如何在Swift 2

时间:2015-11-04 09:12:48

标签: swift2

以下方法使用两个变量计算百分比。

func casePercentage() {
        let percentage = Int(Double(cases) / Double(calls) * 100)
        percentageLabel.stringValue = String(percentage) + "%"
}

上述方法运行良好,除非case = 1且calls = 0。 这会产生致命错误:浮点值无法转换为Int,因为它是无限的或NaN

所以我创建了这个解决方法:

func casePercentage() {
    if calls != 0 {
        let percentage = Int(Double(cases) / Double(calls) * 100)
        percentageLabel.stringValue = String(percentage) + "%"
    } else {
        percentageLabel.stringValue = "0%"
    }
}

这不会出错,但在其他语言中,您可以使用.isNaN()方法检查变量。这在Swift2中如何工作?

1 个答案:

答案 0 :(得分:0)

您可以使用!运算符“强行打开”可选类型:

calls! //asserts that calls is NOT nil and gives a non-optional type

但是,如果 nil,这将导致运行时错误。

防止使用nil或0的一个选项是执行您已完成的操作并检查它是否为0.

第二个选项是nil - 检查

if calls != nil

第三个(和大多数Swift-y)选项是使用if let结构:

if let nonNilCalls = calls {
    //...
}

如果ifcalls,则nil块的内部将无法运行。

请注意,nil - 检查和if let NOT 保护您免于除以0.您必须单独检查。

结合第二个和你的方法:

//calls can neither be nil nor <= 0
if calls != nil && calls > 0