【问题标题】:Binary operator ..< cannot be applied to operands 'Int' and 'Int?'二元运算符 ..< 不能应用于操作数 'Int' 和 'Int?'
【发布时间】:2018-04-25 16:23:55
【问题描述】:

我正在尝试找出 Swift 的细微差别。如果我有一个像 numberOfViews 这样的包装 Int ,我该如何解开它并在 for 循环中对其进行迭代。 Xcode 抱怨:二元运算符 ..

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

    }

【问题讨论】:

  • 最有可能:for i in 0..&lt;(numberOfViews ?? 0) { ... },如果您不想在此之前打开它。

标签: ios swift4


【解决方案1】:

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

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

}

【讨论】:

    【解决方案2】:

    您可以通过在 for 循环条件中使用 ??numberOfViews 来分配默认值,如下所示:

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

    或者,

    应用括号,因为&lt; has higher precedence than ??:

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

    【讨论】:

      猜你喜欢
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 2016-09-20
      • 2015-08-12
      • 2015-10-22
      相关资源
      最近更新 更多