Я только что создал новый проект Swift в Xcode. Мне интересно, какую версию Swift он использует.
Как я могу видеть, в Xcode или терминале, какую версию Swift я использую в своем проекте?
Я только что создал новый проект Swift в Xcode. Мне интересно, какую версию Swift он использует.
Как я могу видеть, в Xcode или терминале, какую версию Swift я использую в своем проекте?
Ответы:
В настройках сборки проекта есть блок «Swift Compiler - Languages», в котором хранится информация о версии языка Swift в формате ключ-значение. Он покажет вам всю доступную (поддерживаемую) языковую версию Swift для вашего Xcode и активную версию также с помощью галочки.
Проект ► (Выберите цель проекта) ► Параметры сборки ► (Введите 'swift_version' в строке поиска) Язык компилятора Swift ► Версия Swift Language ► Нажмите на список языков, чтобы открыть его (и в любом из списков будет отмечена галочка). - это будет текущая версия swift).
Посмотрите на этот снимок, для простоты понимания:
С помощью следующего кода программно вы можете найти версию Swift, поддерживаемую вашим проектом.
#if swift(>=5.2)
print("Hello, Swift 5.2")
#elseif swift(>=5.1)
print("Hello, Swift 5.1")
#elseif swift(>=5.0)
print("Hello, Swift 5.0")
#elseif swift(>=4.2)
print("Hello, Swift 4.2")
#elseif swift(>=4.1)
print("Hello, Swift 4.1")
#elseif swift(>=4.0)
print("Hello, Swift 4.0")
#elseif swift(>=3.2)
print("Hello, Swift 3.2")
#elseif swift(>=3.0)
print("Hello, Swift 3.0")
#elseif swift(>=2.2)
print("Hello, Swift 2.2")
#elseif swift(>=2.1)
print("Hello, Swift 2.1")
#elseif swift(>=2.0)
print("Hello, Swift 2.0")
#elseif swift(>=1.2)
print("Hello, Swift 1.2")
#elseif swift(>=1.1)
print("Hello, Swift 1.1")
#elseif swift(>=1.0)
print("Hello, Swift 1.0")
#endif
Вот результат использования Playground (с Xcode 11.x )
Что я делаю, это говорю в Терминале:
$ xcrun swift -version
Выход для Xcode 6.3.2:
Apple Swift version 1.2 (swiftlang-602.0.53.1 clang-602.0.53)
Конечно, это предполагает, что вы xcrun
правильно указываете на свою копию XCode. Если, как и я, вы манипулируете несколькими версиями Xcode, это может быть проблемой! Чтобы убедиться, что это так, скажем,
$ xcrun --find swift
и посмотрите на путь к Xcode, который он вам показывает. Например:
/Applications/Xcode.app/...
Если это ваш Xcode, то вывод от -version
точный. Если вам нужно переизбрать xcrun
, используйте всплывающее меню инструментов командной строки на панели настроек Locations в Xcode.
xcode-select -p
чтобы напечатать путь к Xcode, который будет использовать xcrun, и sudo xcode-select -s /path/to/Xcode.app
изменить его.
Начиная с Xcode 8.3 и далее, Build Settings
есть ключ Swift Language Version
со значением быстрой версии, которую использует ваша цель.
Для старых кодов X используйте это решение, откройте терминал и введите следующую команду (ы)
Случай 1: Вы установили только одно приложение XCode
swift -version
Случай 2: Вы установили несколько приложений Xcode
Переключатель active developer directory
(замените Xcode_7.3.app
следующую команду именем вашего файла приложения XCode из каталога приложений, для которого вы хотите проверить версию swift)
sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/Developer
затем
swift -version
ПРИМЕЧАНИЕ. От Xcode 8 до Xcode 8.2.x вы можете использовать swift 2.3, даже если Xcode 8 использует swift 3.x в качестве версии swift по умолчанию. Чтобы использовать swift 2.3, просто включите флаг Use Legacy Swift Language Version
to YES
from, Build Setting
и XCode будет использовать Swift 2.3 для этой цели проекта.
Вы можете увидеть и выбрать, какую версию Swift Xcode использует в:
Цель -> Настройки сборки -> Версия Swift Language :
Это доступно в Xcode 8.3 и Xcode 9 (не проверял более старые версии)
Swift Language Version
не подходит в качестве настройки в моем проекте Xcode 8.2.1. Это имеет Use Legacy Swift Language Version
.
Swift Language Version
не существовало здесь Build Settings
до Xcode 8.3 .... в предыдущих версиях Xcode 8.x Use Legacy Swift Language Version
, No
= Swift 3 и Yes
= Swift 2.3
Это сообщение Reddit помогло мне: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet
Xcode 8 использует Swift 3.0 по умолчанию. Но вы можете включить Swift 2.3. Перейдите в «Настройки сборки» проекта и установите «Использовать старую версию Swift Language» на YES.
Старый добрый reddit :)
Чтобы увидеть версию swift по умолчанию, установленную на вашем компьютере, а затем из командной строки введите следующее:
swift --version
Apple Swift версия 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)
Цель: x86_64-apple-darwin17.6.0
Скорее всего, это версия, которая включена в версию Xcode магазина приложений, которую вы установили (если вы ее не изменили).
Если вы хотите определить фактическую версию Swift, используемую конкретной версией Xcode (например, бета), то из командной строки вызовите исполняемый файл swift в пакете Xcode и передайте ему параметр --version
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version
Apple Swift версия 4.2 (swiftlang-1000.0.16.7 clang-1000.10.25.3)
Цель: x86_64-apple-darwin17.6.0
/usr/bin/swiftc --version
На случай, если кто-то ищет быстрое сопоставление версии Swift на основе версии Xcode:
Xcode 11.5 : Swift version 5.2.4
Xcode 11.4 : Swift version 5.2
Xcode 11.3 : Swift version 5.1.3
Xcode 11.2.1: Swift version 5.1.2
Получается при выполнении следующей команды, как указано в разных версиях Xcode:
/Applications/Xcode11.5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version
Бонус: я использую собственный скрипт node.js для извлечения чистой строки для использования с документацией Jazzy. Вы можете воспользоваться этим, если сможете найти место для работы в процессе разработки:
Вызывается из скрипта Bash:
#!/bin/bash
swiftversion=$(node SwiftVerSlicer.js "${xcrun swift -version}");
echo $swiftversion
SwiftVerSlicer.js:
// begin script
const inputString = `${process.argv[2]}`
let searchTerm = (inputString.indexOf('(') - 1)//-1 cause whitespace
let version = inputString.slice(0,searchTerm)
console.log(version)
// end script
Вы также можете использовать регулярные выражения, но делайте что хотите:]