二元运算符..<不能应用于操作数' Int'和' Int?'

时间:2018-04-25 16:23:56

标签: ios swift4

我想弄清楚Swift的细微差别。如果我有一个像numberOfViews这样的包装的Int,我怎么能解开它并在for循环中迭代它。 Xcode抱怨:二元运算符..<不能应用于操作数' Int'和for' Int?',在for循环线上。

    let numberOfViews: Int? = dataSource?.numberOfViews(in: self)
    for i in 0..<numberOfViews ?? 0 {

    }

2 个答案:

答案 0 :(得分:4)

您的问题是..<的优先级高于??,因此您尝试构建的Range被解释为(0..<numberOfViews) ?? 0,因为numberOfViews失败确实是可选的。使用括号如下:

for i in 0..<(numberOfViews ?? 0) {

}

答案 1 :(得分:1)

  

您可以在将??应用于numberOfViews之前指定默认值,然后再将其用于for循环条件,如下所示:

let numberOfViews: Int = dataSource?.numberOfViews(in: self) ?? 0
for i in 0..<numberOfViews {

}

  

应用括号,因为< has higher precedence than ??

for i in 0..<(numberOfViews ?? 0) {

}