Как узнать, какая версия Swift установлена на моём Mac и в Xcode?
Как точно определить версию Swift: три надёжных способа
Привет! Твоя путаница абсолютно нормальна — даже опытные разработчики иногда теряются в версиях. Давай разберёмся по порядку. Версия Swift может отличаться в трёх местах: система (терминал), Xcode и конкретный проект. Вот как проверить каждое из них.
Способ 1: Терминал — версия Swift в системе
Команда swift --version показывает версию Swift, установленную в командной строке. Это обычно версия из Xcode Command Line Tools. Выполни в терминале:
swift --version
Пример вывода:
Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
Target: arm64-apple-macosx14.0
Здесь 5.10 — это мажорная и минорная версия. Swift 5.10 — это эволюция Swift 5.0, с новыми фичами, но обратно совместимый с кодом на Swift 5.x.
Способ 2: Xcode — версия Swift в проекте
В Xcode версия Swift задаётся в настройках сборки (Build Settings) для каждого таргета. Чтобы её увидеть:
- Открой свой проект в Xcode
- Выбери таргет (слева вверху, рядом со схемой)
- Перейди на вкладку Build Settings
- В строке поиска введи
swift version - Найди параметр Swift Language Version
Там будет значение вроде 5 или 4.2. Если стоит 5, это означает, что Xcode использует последнюю доступную версию Swift 5.x для этой версии Xcode. Узнать точную минорную версию (например, 5.9 или 5.10) можно через меню Xcode → About Xcode — в информации о версии будет строка «Swift 5.10».
Способ 3: Из кода — программное определение
Если хочешь проверить версию прямо в рантайме (например, для условной компиляции), используй директиву #if swift(>=5.9):
#if swift(>=5.9)
print("Мы на Swift 5.9 или новее")
#elseif swift(>=5.0)
print("Мы на Swift 5.x, но старше 5.9")
#else
print("Это Swift 4.2 или 4.x")
#endif
Также можно вывести версию в консоль:
print("Версия Swift: \(Swift.version)")
Что насчёт совместимости старых проектов?
Если откроешь проект на Swift 3 в Xcode 15, он не скомпилируется напрямую. Но Xcode предложит мигратор — инструмент, который автоматически обновит код до текущей версии (через Edit → Convert → To Current Swift Syntax). Миграция работает для Swift 4 → 5, но с Swift 3 могут быть ручные правки. Рекомендую всегда держать проект на последней стабильной версии Swift, поддерживаемой твоим Xcode.
Краткий итог: swift --version в терминале — системная версия. Swift Language Version в Build Settings — версия для проекта. Версия в About Xcode — точная минорная версия, используемая IDE. Не путай их: все три могут отличаться, если у тебя установлено несколько Xcode или тулчейнов.
Быстрый способ: используйте команду xcrun
Иногда swift --version показывает не ту версию, которую использует Xcode (например, если у тебя установлено несколько тулчейнов). Более точный способ — запустить Swift через xcrun, который привязан к активному Xcode:
xcrun swift --version
Эта команда гарантированно покажет версию Swift из того Xcode, который выбран как «Command Line Tools» (можно проверить в Xcode → Settings → Locations → Command Line Tools).
Если хочешь узнать версию для конкретного проекта, можно использовать Swift Package Manager (SPM). В терминале, находясь в папке проекта с Package.swift, выполни:
swift package tools-version
Это покажет минимальную версию Swift, требуемую пакетом. Для Xcode-проектов самый надёжный способ — смотреть SWIFT_VERSION в файле .pbxproj (открой его текстовым редактором и найди строку SWIFT_VERSION = 5.0;).
И помни: если ты используешь SwiftUI или Combine, тебе как минимум нужен Swift 5.3+ (iOS 14+). А для новых фич вроде async/await — Swift 5.5+ (iOS 15+). Всегда сверяйся с документацией Apple.
Ответов пока нет.
Войдите чтобы оставить ответ