Bagaimana saya melihat versi Swift yang saya gunakan?

568

Saya baru saja membuat proyek Swift baru dalam Xcode. Saya bertanya-tanya versi Swift mana yang digunakannya.

Bagaimana saya bisa melihat, dalam Xcode atau terminal, versi Swift apa yang saya gunakan di dalam proyek saya?

David Snabel
sumber
7
Selain judul stackoverflow.com/questions/29140476/... Saya tidak menemukan kesamaan dengan pertanyaan ini yang cukup untuk melabeli pertanyaan ini karena merupakan duplikat . Inti dari pertanyaan ini bukanlah bagaimana menemukan versi Swift secara terprogram , tetapi bagaimana menemukan versi Swift secara umum (melalui terminal atau Xcode atau dll.). Ini perbedaan besar.
David Snabel

Jawaban:

407

Pengaturan membangun proyek memiliki blok 'Swift Compiler - Languages', yang menyimpan informasi tentang Versi Bahasa Swift dalam format nilai kunci. Ini akan menunjukkan kepada Anda semua Versi Bahasa Swift yang tersedia (didukung) untuk Xcode Anda dan versi aktif juga dengan tanda centang.

Proyek ► (Pilih Target Proyek Anda) ► Setelan Bangun ► (Ketik 'swift_version' di bilah pencarian) Bahasa Kompilasi Cepat ► Versi Bahasa Swift ► Klik pada daftar Bahasa untuk membukanya (dan akan ada tanda centang pada salah satu daftar) -item, itu akan menjadi versi cepat saat ini).

Lihat snapshot ini, untuk memudahkan pemahaman:

xcode dengan area yang dijelaskan disorot


Dengan bantuan kode berikut, secara terprogram Anda dapat menemukan versi Swift yang didukung oleh proyek Anda.

#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

Ini adalah hasil menggunakan Playground (dengan Xcode 11.x )

masukkan deskripsi gambar di sini

Krunal
sumber
10
Saya pikir ini jawaban yang benar. Lebih mudah daripada menelepon terminal. (terutama jika Anda memiliki versi Xcode yang berbeda diinstal)
Mike Keskinov
17
Ini adalah jawaban yang benar karena versi cepat dikonfigurasikan pada basis per target.
Andrew Paul Simmons
2
Saya tidak melihat propoerty ini dalam proyek saya dengan Xcode 8.1
logoff
6
Anda dapat melihat properti ini di versi terbaru dari xcode
Parkhya Dev
1
@JonMcClung - Opsi yang sama juga tersedia di Xcode 10.1. Saya baru saja memeriksanya.
Krunal
500

Apa yang saya lakukan adalah katakan di Terminal:

$ xcrun swift -version

Output untuk Xcode 6.3.2 adalah:

Apple Swift version 1.2 (swiftlang-602.0.53.1 clang-602.0.53)

Tentu saja itu mengasumsikan bahwa Anda xcrunmenunjuk salinan Xcode Anda dengan benar. Jika, seperti saya, Anda menyulap beberapa versi Xcode, itu bisa mengkhawatirkan! Untuk memastikan itu, katakan

$ xcrun --find swift

dan lihat jalur ke Xcode yang ditunjukkannya kepada Anda. Sebagai contoh:

/Applications/Xcode.app/...

Jika itu Xcode Anda, maka output dari -versionakurat. Jika Anda perlu melakukan repoint xcrun, gunakan menu pop-up Command Line Tools di panel preferensi Lokasi Xcode.

matt
sumber
8
Anda juga dapat menggunakan xcode-select -puntuk mencetak path ke Xcode yang akan digunakan xcrun, dan sudo xcode-select -s /path/to/Xcode.appuntuk mengubahnya.
Jack Lawrence
4
Saya baru mulai belajar pengembangan ios dan saya terkejut bahwa xcode tidak membiarkan Anda memilih versi swift atau bahkan memberi tahu Anda versi dari GUI.
Alex
@ RadekWilczak Saya tidak tahu apa yang Anda maksud dengan "seharusnya". Saya baru saja menyalin perintah yang diposting dan disisipkan ke Terminal dan tekan Return, dan itu berhasil. Jadi mungkin ada alternatif lain, tetapi apa yang saya katakan tidak salah.
matt
1
Ini memberi saya jawaban yang salah. Karena swift dikonfigurasi per target. Lihat jawaban di bawah ini dari @ Kwrunal untuk jawaban terbaik.
Andrew Paul Simmons
Saya setuju dengan semua "cara yang benar adalah mengatur SWIFT_VERSION" per proyek. Namun, dalam versi Xcode sebelumnya seperti 8.2, itu tidak menyatakan dengan jelas di UI versi XCode apa yang didukung dalam proyek, dan hanya memiliki "Gunakan Versi Bahasa Swift Legacy" di UI dengan Ya, Tidak, tidak ditentukan. Pendekatan baris perintah sangat berguna untuk dapat dengan cepat menanyakan jawaban untuk apa versi max swift yang tersedia.
truedat101
104

Buka Terminal dan tulis:

swift -version
Alzayed
sumber
12
Ini belum tentu versi cepat yang Xcode lihat. Selain itu, Anda dapat melakukan swift tanpa memiliki Xcode.
asiby
64

Dari Xcode 8.3 dan seterusnya Build Settingsmemiliki kunci Swift Language Versiondengan nilai versi cepat yang digunakan target Anda.

Untuk Xcode yang lebih lama gunakan solusi ini, buka terminal dan ketik perintah berikut

Kasus 1: Anda hanya menginstal satu Aplikasi Xcode

swift -version

Kasus 2: Anda telah menginstal beberapa Aplikasi Xcode

  • Beralih active developer directory(Ganti Xcode_7.3.appdari perintah berikut dengan nama file aplikasi Xcode Anda dari direktori Aplikasi yang ingin Anda periksa versi cepatnya)

     sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/Developer
  • Kemudian

     swift -version

CATATAN: Dari Xcode 8 ke Xcode 8.2.x Anda dapat menggunakan swift 2.3 meskipun Xcode 8 menggunakan swift 3.x sebagai versi swift default. Untuk menggunakan swift 2.3, cukup nyalakan flag Use Legacy Swift Language Versionke YESdari Build Settingdan XCode akan menggunakan Swift 2.3 untuk target proyek itu.

Aditya Deshmane
sumber
21

Anda dapat melihat dan memilih Xcode versi Swift mana yang digunakan di:

Target -> Pengaturan Bangun -> Versi Bahasa Swift :

masukkan deskripsi gambar di sini

Ini tersedia dalam Xcode 8.3 dan Xcode 9 (belum memeriksa versi yang lebih lama)

joern
sumber
2
Swift Language Versiontidak muncul sebagai pengaturan dalam proyek Xcode 8.2.1 saya. Itu memang ada Use Legacy Swift Language Version.
Chris Prince
1
@ ChrisPrince Ya, Swift Language Versiontidak ada di sini Build Settingssampai Xcode 8.3 .... di versi Xcode 8.x sebelumnya Use Legacy Swift Language Version, No= Swift 3, dan Yes= Swift 2.3
William GP
17

Posting reddit ini membantu saya: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet

Xcode 8 menggunakan Swift 3.0 sebagai default. Tetapi Anda dapat mengaktifkan Swift 2.3. Pergi ke Pengaturan Bangun proyek dan set 'Gunakan Versi Bahasa Swift Legacy' ke YES.

Good reddit :)

alexisSchreier
sumber
1
Saya tidak dapat menemukan ini dengan mencari 'Gunakan Versi Bahasa Legacy Swift' atau 'Legacy'
JerryZhou
Saya menggunakan Xcode Version 8.3.2 (8E2002) terbaru dan swift 3 di Swift Language Version. Sekarang saya ingin mengubahnya ke swift 2.3 tetapi hanya ada satu opsi swift 3.0 dan 2nd tidak ditentukan. jadi tolong bantu bagaimana ini mungkin? mendapatkan Swift 2.3 di proyek saya saat ini? @alexisSchreier
Arsal
15

Untuk melihat versi default swift yang diinstal pada mesin Anda kemudian dari baris perintah, ketikkan yang berikut:

swift --version

Apple Swift versi 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)

Target: x86_64-apple-darwin17.6.0

Kemungkinan besar ini adalah versi yang disertakan dalam versi Xcode app store yang telah Anda instal (kecuali Anda telah mengubahnya).

Jika Anda ingin menentukan versi aktual Swift yang digunakan oleh versi Xcode tertentu (beta, misalnya) dari baris perintah, aktifkan biner cepat dalam bundel Xcode dan berikan parameter --version

/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version

Apple Swift versi 4.2 (swiftlang-1000.0.16.7 clang-1000.10.25.3)

Target: x86_64-apple-darwin17.6.0

Paul King
sumber
1

Saya menggunakan Swift dari Google Colab. Berikut cara mengeceknya di Colab.

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

Hasilnya adalah 5.0-dev

korakot
sumber
0

Dalam hal siapa pun mencari pemetaan satu-ke-satu yang cepat dari versi Swift berdasarkan Versi 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

Diperoleh dengan menjalankan perintah berikut sebagaimana disebutkan pada versi Xcode yang berbeda:

/Applications/Xcode11.5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version
Alpana
sumber
-1

Kontribusi bonus: Saya menggunakan skrip node.js khusus untuk mengekstrak string bersih untuk digunakan dengan dokumentasi Jazzy. Anda mungkin dapat menggunakan ini jika Anda dapat menemukan tempat untuk mengerjakannya dalam proses dev Anda:

Dipanggil dari skrip 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

Anda juga dapat menggunakan regex tentu saja, tetapi lakukan apa pun yang Anda suka:]


sumber
-1

Dengan hanya memasukkan perintah swift di terminal, ia akan menampilkan versi, sambil masuk ke konsol Swift. (Sesuatu seperti di bawah ini)

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
sumber
-1
  1. Pilih proyek Anda
  2. Pengaturan Bangun
  3. mencari "bahasa cepat"
  4. sekarang Anda dapat melihat versi cepat mana yang Anda gunakan dalam proyek Anda

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

Goti virus
sumber
Apa bedanya dengan solusi pertama yang diberikan di stackoverflow.com/a/46080904/1187415 ?
Martin R
baik saya akan membuang direktori proyek utama dan ketika Anda mengetik "bahasa cepat" itu hanya menunjukkan versi cepat di atas di Bangun Pengaturan tidak lain dari itu ..
viral goti
-1

Anda akan mendapatkan ini di bawah pengaturan proyek

masukkan deskripsi gambar di sini

HOSSAIN FARUQUE
sumber