Помимо заголовка stackoverflow.com/questions/29140476/… Я не нахожу никакого сходства с этим вопросом, этого достаточно, чтобы обозначить этот вопрос как дубликат . Суть этого вопроса не в том, как найти версию Swift программным способом, а в том, как найти версию Swift в общем виде (через терминал, Xcode или т. Д.). Это большая разница.
Дэвид Снабел
Ответы:
407
В настройках сборки проекта есть блок «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 )
Я думаю, что это правильный ответ. Проще, чем звонить в терминал. (особенно, если у вас установлена другая версия Xcode)
Майк Кескинов
17
Это правильный ответ, потому что Swift версия настроена для каждой цели.
Эндрю Пол Симмонс
2
Я не вижу этого свойства в своем проекте с Xcode 8.1
выход
6
Вы можете видеть это свойство на последних версиях XCode
Parkhya Dev
1
@JonMcClung - та же опция доступна и в Xcode 10.1. Я только что проверил это.
Крунал
500
Что я делаю, это говорю в Терминале:
$ xcrun swift -version
Выход для Xcode 6.3.2:
AppleSwift 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изменить его.
Джек Лоуренс
4
Я только начал изучать ios development и удивляюсь, что xcode не позволяет вам выбирать версию swift и даже не сообщает вам версию из GUI.
Алекс
@RadekWilczak Я не знаю, что вы подразумеваете под «должно быть». Я просто скопировал опубликованную команду, вставил ее в терминал и нажал Return, и она работает. Так что, возможно, есть другая альтернатива, но то, что я сказал, не так.
матовый
1
Это дало мне неправильный ответ. Потому что Swift настроен на цель. Смотрите ответ ниже @Krunal для лучшего ответа.
Эндрю Пол Симмонс
Я согласен со всеми «правильный способ - установить SWIFT_VERSION» для каждого проекта. Однако в более ранних версиях Xcode, таких как 8.2, в пользовательском интерфейсе четко не указано, какая версия XCode поддерживается в проекте, и просто есть «Использовать устаревшую версию языка Swift» в пользовательском интерфейсе с Да, Нет, не указано. Подход с использованием командной строки чрезвычайно полезен, чтобы иметь возможность быстро запросить ответ о том, какая версия Max Swift доступна.
Это не обязательно версия 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)
ПРИМЕЧАНИЕ. От 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 для этой цели проекта.
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
Xcode 8 использует Swift 3.0 по умолчанию. Но вы можете включить Swift 2.3. Перейдите в «Настройки сборки» проекта и установите «Использовать старую версию Swift Language» на YES.
Я не могу найти это с помощью поиска «Использовать 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
Бонус: я использую собственный скрипт 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
Вы также можете использовать регулярные выражения, но делайте что хотите:]
хорошо, я собираюсь бросить основной каталог проекта, и когда вы набираете «swift language», в настройках сборки отображается только swift версия сверху.
Ответы:
В настройках сборки проекта есть блок «Swift Compiler - Languages», в котором хранится информация о версии языка Swift в формате ключ-значение. Он покажет вам всю доступную (поддерживаемую) языковую версию Swift для вашего Xcode и активную версию также с помощью галочки.
Посмотрите на этот снимок, для простоты понимания:
С помощью следующего кода программно вы можете найти версию Swift, поддерживаемую вашим проектом.
Вот результат использования Playground (с Xcode 11.x )
источник
Что я делаю, это говорю в Терминале:
Выход для Xcode 6.3.2:
Конечно, это предполагает, что вы
xcrun
правильно указываете на свою копию XCode. Если, как и я, вы манипулируете несколькими версиями Xcode, это может быть проблемой! Чтобы убедиться, что это так, скажем,и посмотрите на путь к Xcode, который он вам показывает. Например:
Если это ваш 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
Случай 2: Вы установили несколько приложений Xcode
Переключатель
active developer directory
(заменитеXcode_7.3.app
следующую команду именем вашего файла приложения XCode из каталога приложений, для которого вы хотите проверить версию swift)затем
ПРИМЕЧАНИЕ. От Xcode 8 до Xcode 8.2.x вы можете использовать swift 2.3, даже если Xcode 8 использует swift 3.x в качестве версии swift по умолчанию. Чтобы использовать swift 2.3, просто включите флаг
Use Legacy Swift Language Version
toYES
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.xUse 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
Старый добрый reddit :)
источник
Чтобы увидеть версию swift по умолчанию, установленную на вашем компьютере, а затем из командной строки введите следующее:
Скорее всего, это версия, которая включена в версию Xcode магазина приложений, которую вы установили (если вы ее не изменили).
Если вы хотите определить фактическую версию Swift, используемую конкретной версией Xcode (например, бета), то из командной строки вызовите исполняемый файл swift в пакете Xcode и передайте ему параметр --version
источник
и быстрая версия <-> версия Xcode
источник
Я использую Swift от Google Colab. Вот как это проверить в Colab.
Результат
5.0-dev
источник
На случай, если кто-то ищет быстрое сопоставление версии Swift на основе версии Xcode:
Получается при выполнении следующей команды, как указано в разных версиях Xcode:
источник
Бонус: я использую собственный скрипт node.js для извлечения чистой строки для использования с документацией Jazzy. Вы можете воспользоваться этим, если сможете найти место для работы в процессе разработки:
Вызывается из скрипта Bash:
SwiftVerSlicer.js:
Вы также можете использовать регулярные выражения, но делайте что хотите:]
источник
Просто введя команду swift в терминале, он покажет версию, а войдя в консоль Swift (что-то вроде ниже)
источник
https://i.stack.imgur.com/Ojn3m.png
источник
Вы получите это в настройках проекта
источник