我想弄清楚Swift的细微差别。如果我有一个像numberOfViews这样的包装的Int,我怎么能解开它并在for循环中迭代它。 Xcode抱怨:二元运算符..<不能应用于操作数' Int'和for' Int?',在for循环线上。
let numberOfViews: Int? = dataSource?.numberOfViews(in: self)
for i in 0..<numberOfViews ?? 0 {
}
答案 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) {
}