如何在Swift中展开这个可选项,更优雅一点?

时间:2015-03-24 14:09:29

标签: ios swift syntax

解包选项可以通过几种不同的方式完成,但我发现自己只使用一种方式。

func keyboardDidShow(keyboardRect: CGRect?) {
    var height: CGFloat?
    if let rectHeight = keyboardRect?.height {
        height = rectHeight
    } else {
        height = 0
    }
    let insets = UIEdgeInsets(top: 0, left: 0, bottom: height!, right: 0)

    ///...clipping rest of method
}

你如何减少这里的行数?

2 个答案:

答案 0 :(得分:6)

在此特定示例中,您可以使用nil-coalescing operator ??

func keyboardDidShow(keyboardRect: CGRect?) {
    let height = keyboardRect?.height ?? 0
    let insets = UIEdgeInsets(top: 0, left: 0, bottom: height, right: 0)

    ///...clipping rest of method
}

答案 1 :(得分:1)

高度不需要是可选的,因为它总是会得到一个值。使用最新的编译器,不需要它是var。你可以有一个常量,它将在if的两个分支上初始化。当然??在这种情况下,运算符工作正常。