Как узнать, какую версию Swift я использую?

568

Я только что создал новый проект Swift в Xcode. Мне интересно, какую версию Swift он использует.

Как я могу видеть, в Xcode или терминале, какую версию Swift я использую в своем проекте?

Дэвид Снабель
источник
7
Помимо заголовка stackoverflow.com/questions/29140476/… Я не нахожу никакого сходства с этим вопросом, этого достаточно, чтобы обозначить этот вопрос как дубликат . Суть этого вопроса не в том, как найти версию Swift программным способом, а в том, как найти версию Swift в общем виде (через терминал, Xcode или т. Д.). Это большая разница.
Дэвид Снабел

Ответы:

407

В настройках сборки проекта есть блок «Swift Compiler - Languages», в котором хранится информация о версии языка Swift в формате ключ-значение. Он покажет вам всю доступную (поддерживаемую) языковую версию Swift для вашего Xcode и активную версию также с помощью галочки.

Проект ► (Выберите цель проекта) ► Параметры сборки ► (Введите 'swift_version' в строке поиска) Язык компилятора Swift ► Версия Swift Language ► Нажмите на список языков, чтобы открыть его (и в любом из списков будет отмечена галочка). - это будет текущая версия swift).

Посмотрите на этот снимок, для простоты понимания:

xcode с выделенными областями


С помощью следующего кода программно вы можете найти версию 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 )

введите описание изображения здесь

Krunal
источник
10
Я думаю, что это правильный ответ. Проще, чем звонить в терминал. (особенно, если у вас установлена ​​другая версия Xcode)
Майк Кескинов
17
Это правильный ответ, потому что Swift версия настроена для каждой цели.
Эндрю Пол Симмонс
2
Я не вижу этого свойства в своем проекте с Xcode 8.1
выход
6
Вы можете видеть это свойство на последних версиях XCode
Parkhya Dev
1
@JonMcClung - та же опция доступна и в Xcode 10.1. Я только что проверил это.
Крунал
500

Что я делаю, это говорю в Терминале:

$ 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.

матовый
источник
8
Вы также можете использовать, xcode-select -pчтобы напечатать путь к Xcode, который будет использовать xcrun, и sudo xcode-select -s /path/to/Xcode.appизменить его.
Джек Лоуренс
4
Я только начал изучать ios development и удивляюсь, что xcode не позволяет вам выбирать версию swift и даже не сообщает вам версию из GUI.
Алекс
@RadekWilczak Я не знаю, что вы подразумеваете под «должно быть». Я просто скопировал опубликованную команду, вставил ее в терминал и нажал Return, и она работает. Так что, возможно, есть другая альтернатива, но то, что я сказал, не так.
матовый
1
Это дало мне неправильный ответ. Потому что Swift настроен на цель. Смотрите ответ ниже @Krunal для лучшего ответа.
Эндрю Пол Симмонс
Я согласен со всеми «правильный способ - установить SWIFT_VERSION» для каждого проекта. Однако в более ранних версиях Xcode, таких как 8.2, в пользовательском интерфейсе четко не указано, какая версия XCode поддерживается в проекте, и просто есть «Использовать устаревшую версию языка Swift» в пользовательском интерфейсе с Да, Нет, не указано. Подход с использованием командной строки чрезвычайно полезен, чтобы иметь возможность быстро запросить ответ о том, какая версия Max Swift доступна.
truedat101
104

Откройте Терминал и напишите:

swift -version
Alzayed
источник
12
Это не обязательно версия Swift, которую видит XCode. Кроме того, вы можете иметь быстрый без Xcode.
asiby
64

Начиная с 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 Versionto YESfrom, Build Settingи XCode будет использовать Swift 2.3 для этой цели проекта.

Адитья Дешмане
источник
21

Вы можете увидеть и выбрать, какую версию Swift Xcode использует в:

Цель -> Настройки сборки -> Версия Swift Language :

введите описание изображения здесь

Это доступно в Xcode 8.3 и Xcode 9 (не проверял более старые версии)

Йорн
источник
2
Swift Language Versionне подходит в качестве настройки в моем проекте Xcode 8.2.1. Это имеет Use Legacy Swift Language Version.
Крис Принс
1
@ChrisPrince Да, Swift Language Versionне существовало здесь Build Settingsдо Xcode 8.3 .... в предыдущих версиях Xcode 8.x Use Legacy Swift Language Version, No= Swift 3 и Yes= Swift 2.3
William GP
17

Это сообщение 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 :)

alexisSchreier
источник
1
Я не могу найти это с помощью поиска «Использовать Legacy Swift Language Version» или «Legacy»
JerryZhou
Я использую последнюю версию XCode 8.3.2 (8E2002) и Swift 3 там в версии Swift Language. Теперь я хочу изменить это на swift 2.3, но есть только один вариант swift 3.0, а второй не указан. так что, пожалуйста, объясните, как это возможно? получить быстрый 2.3 в моем текущем проекте? @alexisSchreier
ARSAL
15

Чтобы увидеть версию 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

Пол Кинг
источник
1

Я использую Swift от Google Colab. Вот как это проверить в Colab.

!/swift/toolchain/usr/bin/swift --version

Результат 5.0-dev

korakot
источник
0

На случай, если кто-то ищет быстрое сопоставление версии 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
Alpana
источник
-1

Бонус: я использую собственный скрипт 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

Вы также можете использовать регулярные выражения, но делайте что хотите:]


источник
-1

Просто введя команду swift в терминале, он покажет версию, а войдя в консоль Swift (что-то вроде ниже)

System-IOSs-MacBook-Air:~ system$ swift
Welcome to Apple Swift version 5.1 (swiftlang-1100.0.270.13 clang-1100.0.33.7).
Type :help for assistance.
SuperNova
источник
-1
  1. Выберите свой проект
  2. Настройка сборки
  3. поиск "быстрый язык"
  4. Теперь вы можете увидеть, какую версию Swift вы используете в своем проекте.

https://i.stack.imgur.com/Ojn3m.png

вирусный готи
источник
Чем это отличается от первого решения, приведенного на stackoverflow.com/a/46080904/1187415 ?
Мартин Р
хорошо, я собираюсь бросить основной каталог проекта, и когда вы набираете «swift language», в настройках сборки отображается только swift версия сверху.
viral goti
-1

Вы получите это в настройках проекта

введите описание изображения здесь

FARUQUE HOSSAIN
источник