Переменная внутри необязательной переменной

#swift

#swift

Вопрос:

У меня получилось что-то вроде этого:

let index = row.section?.index ?? -1

Что row.section равно нулю? Пожалуйста, помогите мне понять, как работает эта строка?

Это легко понять locationManager?.startUpdatingLocation() : метод будет выполнен locationManager не nil . Но при назначении необязательной переменной в экземпляр notnull меня сбивает с толку.

Комментарии:

1. это означает, что если row.section? .индекс равен нулю, индекс будет равен -1

2. Что row.section равно нулю?

Ответ №1:

Из документации ( https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html )

Оператор объединения с нулем (a ?? b) разворачивает необязательный a, если он содержит значение, или возвращает значение по умолчанию b, если a равно нулю. Выражение a всегда имеет необязательный тип. Выражение b должно соответствовать типу, который хранится внутри a.

В этом случае, если row.section равно нулю, все выражение (row.section?.индекс) равен нулю, поэтому индекс будет установлен в -1

Эта строка let index = row.section?.index должна быть неправильной. Она должна быть обернута в let index = (row.section?.index)!