Видеокурсы по изучению языка программирования Swift. Подробнее

Утверждения

Если вы нашли опечатку в тексте, выделите ее и нажмите CTRL + ENTER.

Опционалы позволяют проверить существует ли значение, или нет, и писать код, который корректно относится к отсутствию значения. В некоторых случаях, однако, это просто невозможно для вашего кода продолжать выполняться, если значение не существует, или если данное значение не удовлетворяет определенным условиям. В таких ситуациях, вы можете вызвать утверждение (assertion) в коде для остановки выполнения и предоставления возможности отладки причины отсутствующего или недопустимого значения.

Отладка с помощью утверждений

Утверждение представляет собой runtime проверку того, что логическое условие определенно вычисляется как истина. Буквально говоря, утверждение «утверждает», что условие истинно. Используйте утверждения, чтобы убедиться, что главное условие выполняется перед тем как выполнить дальнейший код. Если условие истинно, выполнение кода продолжается как обычно. Если условие вычисляется как ложное, выполнение кода прекращается, а ваше приложение завершается.

Если ваш код вызывает утверждение во время работы в отладочной среде, например, когда вы запускаете приложение в Xcode, вы можете увидеть где именно появится неверное состояние и запросить состояние вашего приложения в момент, когда утверждение было вызвано. Утверждение также позволяет обеспечить подходящим отладочным сообщением, отражающим суть утверждения.

Утверждения можно писать через вызов глобальной функции assert. Вы передаете функции assert некое выражение, которое вычисляется в true или false, а также сообщение, которое должно отображается в случае, если результат условия false:

let age = -3
assert(age >= 0, "Возраст человека не может быть меньше нуля")
// это приведет к вызову утверждения, потому что age >= 0, а указанное значение < 0.

В этом примере, выполнение кода продолжится, только если age >= 0 вычислится в true, что может случиться, если значение age не отрицательное. Если значение age отрицательное, как в коде выше, тогда age >= 0 вычислится как false, и запустится утверждение. завершив за собой приложение.

Сообщение утверждения можно пропускать по желанию, как в следующем примере:

assert(age >= 0)

Заметка

Утверждения автоматически выключены, когда ваш код компилируется с оптимизациями, например с дефолтной конфигурацией релиза таргета вашего приложения в Xcode .

Когда использовать утверждения

Используйте утверждения, когда условие вероятно может стать false, но, для продолжения выполнения кода, он определенно должен быть true. Подходящие сценарии для проверки утверждения включают:

  • Индекс целого числа передается для работы над пользовательским индексом, но значение индекса может быть слишком маленьким или слишком большим.
  • Значение передается функции, но если значение недопустимо, это будет означать, что функция не сможет выполнить свою задачу.
  • Опциональное значение в текущем состоянии nil, но значение не-nil необходимо для последующего успешного выполнения кода.

Смотрите также главы Индексы и Функции.

Заметка

Утверждения приводят к завершению вашего приложения и не являются заменой проектирования кода в надежде, что недействительные условия вряд ли возникнут. Тем не менее, в ситуациях, когда недопустимые условия возможны, утверждение является эффективным способом для того, чтобы такие условия были выделены и замечены во время разработки, перед публикацией вашего приложения.

Swift: 
3.0