Я щойно створив новий проект Swift в Xcode. Мені цікаво, яку версію Swift використовує.
Як я можу побачити в Xcode або терміналі, яку версію Swift я використовую всередині свого проекту?
Я щойно створив новий проект Swift в Xcode. Мені цікаво, яку версію Swift використовує.
Як я можу побачити в Xcode або терміналі, яку версію Swift я використовую всередині свого проекту?
Відповіді:
В налаштуваннях проекту є блок "Swift Compiler - Languages", який зберігає інформацію про версію мови Swift у форматі "ключ-значення". Він покаже вам всю доступну (підтримувану) версію мови Swift для вашого Xcode та активної версії також галочкою.
Проект ► (Виберіть ціль проекту) ► Налаштування збірки ► (Введіть 'swift_version' на панелі пошуку) Швидка мова компілятора ► Версія мови швидкої мови ► Клацніть на списку мов, щоб відкрити її (і на будь-якому списку з’явиться галочка -item, це буде поточна швидка версія).
Подивіться цей знімок для легкого розуміння:
За допомогою наступного коду програмно ви можете знайти версію 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, скористайтеся спливаючим меню Інструменти командного рядка на панелі налаштувань Xcode's Locations.
xcode-select -pдля друку шляху до Xcode, який використовуватиме xcrun, та sudo xcode-select -s /path/to/Xcode.appзмінити його.
З Xcode 8.3 далі Build Settingsє ключ Swift Language Versionзі значенням швидкої версії, яку використовує ваша мета.
Для старих Xcodes використовуйте це рішення, відкрийте термінал і введіть наступні команди
Випадок 1: Ви встановили лише одну програму Xcode
swift -version
Випадок 2: Ви встановили кілька додатків Xcode
Перемикач active developer directory(Замініть Xcode_7.3.appнаступну команду своїм ім'ям файлу програми Xcode з каталогу додатків, для якого потрібно перевірити швидку версію)
sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/DeveloperТоді
swift -versionПРИМІТКА: Від Xcode 8 до Xcode 8.2.x ви можете використовувати swift 2.3, навіть якщо Xcode 8 використовує швидку версію 3.x як стандартну швидку версію. Щоб використовувати swift 2.3, просто увімкніть прапор Use Legacy Swift Language Versionна YESз Build Settingі XCode використовуватиме Swift 2.3 для цієї мети проекту.
Ви можете побачити та вибрати, яку версію Xcode версії Swift використовують у:
Мета -> Налаштування збірки -> Мовна версія версії :
Це доступно в 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. Перейдіть до "Налаштування збірки" проекту та встановіть "Використовувати застарілу мову швидкої версії" на ТАК.
Добрий старий 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 (наприклад, бета-версія), то з командного рядка викликайте швидкий бінарний файл у пакеті 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
Бонусний внесок: я використовую користувальницький скрипт 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
Ви також можете використовувати регулярний вираз, але робіть все, що завгодно:]