【问题标题】:No '+=' candidates produce the expected contextual result type 'Int' [duplicate]没有“+=”候选者产生预期的上下文结果类型“Int”[重复]
【发布时间】:2016-03-31 16:26:59
【问题描述】:

我一直在为 Swift 3 更新我的 Swift 代码(真的很兴奋),到目前为止一切都很好。 但我确实翻滚了一些我似乎无法更新的代码。

我知道我遗漏了一些非常简单的东西,但我就是看不到什么。

这是我在 Swift 2.2 中所拥有的:

var column = 0

[...]

for item in 0 ..< collectionView!.numberOfItemsInSection(0) {
    [...]

    column = column >= (numberOfColumns - 1) ? 0 : ++column
}

++column 当然在 Swift 3 中被弃用,取而代之的是 column += 1

但是,在这种情况下,它会产生错误:

没有“+=”候选产生预期的上下文结果类型“Int”

由于这行代码 (column = column &gt;= (numberOfColumns - 1) ? 0 : column += 1) 产生错误,我尝试了以下方法:

var newCol = column
column = column >= (numberOfColumns - 1) ? 0 : newCol += 1

但我得到了同样的错误。

有人能指点我正确的方向吗?

【问题讨论】:

    标签: ios swift swift3


    【解决方案1】:

    += 不返回值。你需要打破这个。幸运的是,在你的情况下,这比原来的更简单明了:

    column = (column + 1) % numberOfColumns
    

    【讨论】:

      【解决方案2】:

      像这样:

      column = column >= (numberOfColumns - 1) ? 0 : column + 1
      

      【讨论】:

      • 它最清楚、最直接地回答了 OP 的问题,但像往常一样,Rob Napier 的回答是优雅的 Swifty 方式。 :)
      • 是的,你能做什么?
      • 我试过了,但它只是加了 1 而不是 += 1。.map { _ in NSIndexPath(forRow: insertPos++, inSection: 0) } 在我的情况下,n + 1 不起作用
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      相关资源
      最近更新 更多