Ни один кандидат «+=» не дает ожидаемого контекстуального типа результата «Int»

Я обновлял свой код Swift для Swift 3 (очень взволнован), и пока все хорошо. Но я наткнулся на один кусочек кода, который не могу обновить.

Я ЗНАЮ, что мне не хватает чего-то очень простого, но я просто не вижу, что.

Вот что у меня есть в 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 >= (numberOfColumns - 1) ? 0 : column += 1) выдает ошибку, я попробовал следующее:

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

Но я получаю ту же ошибку.

Может ли кто-нибудь указать мне правильное направление?


person Benjamin    schedule 31.03.2016    source источник


Ответы (2)


+= не возвращает значение. Вам нужно разбить это. К счастью, в вашем случае это просто и понятно, чем оригинал:

column = (column + 1) % numberOfColumns
person Rob Napier    schedule 31.03.2016

Как это:

column = column >= (numberOfColumns - 1) ? 0 : column + 1
person matt    schedule 31.03.2016
comment
Он отвечает на вопрос ОП наиболее четко и прямо, но, как обычно, ответ Роба Напьера - элегантный стиль Swifty. :) - person matt; 31.03.2016
comment
да что ты можешь сделать? - person GetSwifty; 31.03.2016
comment
Я попробовал это, но он просто добавляет 1 вместо += 1. .map { _ in NSIndexPath(forRow: insertPos++, inSection: 0) } В моем случае n + 1 не работает - person Trip; 21.04.2016