Двоичный оператор .. <нельзя применить к операндам Int и Int? - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь выяснить небольшой нюанс Swift.Если у меня есть упакованный Int, такой как numberOfViews, как я могу развернуть его и перебрать в цикле for.XCode жалуется, что: двоичный оператор .. <нельзя применить к операндам Int и Int в строке цикла. </p>

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

    }

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Ваша проблема в том, что ..< имеет более высокий приоритет, чем ??, поэтому Range, который вы пытаетесь построить, интерпретируется как (0..<numberOfViews) ?? 0, что не удается, поскольку numberOfViews действительно является необязательным.Используйте скобки следующим образом:

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

}
0 голосов
/ 25 апреля 2018

Вы можете назначить значение по умолчанию, применяя ?? к numberOfViews перед использованием его в условии цикла, как:

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

}

Или,

Применить скобки, потому что < has higher precedence than ??:

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...