В Swift есть встроенная поддержка для проверки доступности API, благодаря которой вы будете уверены, что не используете API-интерфейсы, недоступные для данной deployment target.
Компилятор использует информацию о доступности в SDK, чтобы убедиться, что все API-интерфейсы, используемые в коде, доступны для deployment target, указанного в вашем проекте. Swift выдает сообщение об ошибке во время компиляции, если вы пытаетесь использовать недоступный API.
Вы можете использовать условие доступности в if или guard инструкциях для того, чтобы условно выполнить блок кода, в зависимости от того, доступны ли API-интерфейсы, которые вы хотите использовать, во время выполнения. Компилятор использует информацию из условия доступности, когда проверяет доступность API-интерфейсов в этом блоке кода.
if #available(iOS 10, macOS 10.12, *) {
// Используйте API iOS 10 для iOS и используйте API macOS 10.12 на macOS
} else {
// Используйте более старые API для iOS и macOS
}
Условие доступности выше указывает, что на iOS тело if выполняется только на iOS 10 и более поздних версиях; что касается macOS: только на macOS 10.12 и более поздних версиях. Последний аргумент, *, требует и указывает, что на любой другой платформе, тело if выполняется на минимальной указанной deployment target.
В общем виде условие доступности принимает список названий платформ и версий. Вы можете использовать названия платформы, такие как iOS, macOS, watchOS, и tvOS; полный список можно найти в Атрибуты объявлений. В дополнение к определению основных номеров версий, такие как iOS 8 или macOs 10.10, вы можете указать второстепенные версии номера, такие как iOS 8.3 и macOS 10.10.3.
- if #available (название платформы версия платформы, …, * ) {
- выражения для исполнения, если соответствующие условию API доступны
- } else {
- выражения для исполнения, если соответствующие условию API не доступны
- }