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

No '+=' candidates produce the expected contextual result type 'Int'

我一直在为 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

但是,在此上下文中,它会产生错误:

No '+=' candidates produce the expected contextual result type 'Int'

由于这行代码 (column = column >= (numberOfColumns - 1) ? 0 : column += 1) 产生错误,我尝试了以下操作:

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

但是我得到了同样的错误。

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

像这样:

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

+= 不是 return 值。你需要打破这个。幸运的是,在你的情况下,它比原来的更直接、更清晰:

column = (column + 1) % numberOfColumns