Hangi Swift sürümünü kullandığımı nasıl görebilirim?


567

Xcode içinde yeni bir Swift projesi oluşturdum. Swift'in hangi sürümünü kullandığını merak ediyorum.

Xcode'da veya terminalde, projemde hangi Swift sürümünü kullandığımı nasıl görebilirim?


7
Stackoverflow.com/questions/29140476/… başlığının yanı sıra, bu soruyu yinelenen olarak etiketlemek için yeterli olan bu soruya benzerlik bulamıyorum . Bu sorunun özü, Swift'in sürümünün programlı olarak nasıl bulunacağı değil, Swift'in sürümünün genel olarak nasıl bulunacağıdır (terminal veya Xcode vb. Yoluyla). Bu büyük bir fark.
David Snabel

Yanıtlar:


407

Proje oluşturma ayarlarında, Swift Dil Sürümü ile ilgili bilgileri anahtar / değer biçiminde depolayan bir 'Swift Derleyici - Diller' bloğu bulunur. Xcode'unuz ve etkin sürümünüz için tüm kullanılabilir (desteklenen) Swift Dili Sürümünü de bir onay işareti ile gösterecektir.

Proje ► (Proje Hedefinizi Seçin) ► Yapı Ayarları ► (Arama çubuğuna 'swift_version' yazın) Swift Derleyici Dili ► Swift Dil Sürümü ► Açmak için Dil listesine tıklayın (ve listelerin herhangi birinde bir onay işareti olacaktır. -item, bu geçerli hızlı sürüm olacak).

Kolay anlaşılması için bu anlık görüntüye bakın:

Açıklanan alanların vurgulanmış olduğu xcode


Aşağıdaki kodu kullanarak programlı olarak projeniz tarafından desteklenen Swift sürümünü bulabilirsiniz.

#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

İşte Oyun Alanı ( Xcode 11.x ile ) kullanarak sonuç

resim açıklamasını buraya girin


10
Bunun doğru cevap olduğunu düşünüyorum. Terminal çağırmaktan daha kolaydır. (özellikle
Xcode'un

17
Bu doğru yanıttır çünkü hızlı sürüm hedef başına yapılandırılmıştır.
Andrew Paul Simmons

2
Xcode 8.1 ile projemde bu olasılığı görmüyorum
logoff

6
Bu özelliği xcode
Parkhya Dev'in

1
@JonMcClung - Aynı seçenek Xcode 10.1'de de mevcuttur. Sadece kontrol ettim.
Krunal

500

Ne yaptığım Terminalde:

$ xcrun swift -version

Xcode 6.3.2 için çıktı:

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

Tabii ki xcrunXcode kopyanızı doğru bir şekilde gösterdiğinizi varsayar . Benim gibi, Xcode'un çeşitli sürümlerini hokkabazlıyorsanız, bu bir endişe olabilir! Olduğundan emin olmak için,

$ xcrun --find swift

ve size gösterdiği Xcode yoluna bakın. Örneğin:

/Applications/Xcode.app/...

Bu Xcode'unuzsa, çıktı -versiondoğru. Yeniden işaretlemeniz gerekiyorsa, Xcode'un xcrunKonumlar tercih bölmesindeki Komut Satırı Araçları açılır menüsünü kullanın.


8
Ayrıca xcode-select -pxcrun'un kullanacağı Xcode yolunu yazdırmak ve sudo xcode-select -s /path/to/Xcode.appdeğiştirmek için de kullanabilirsiniz .
Jack Lawrence

4
Sadece ios geliştirme öğrenmeye başladım ve xcode'un hızlı sürümü seçmenize veya hatta GUI'den sürümü bilmenize izin vermediğine şaşırdım.
Alex

@RadekWilczak "Olmalı" derken ne demek istediğini bilmiyorum. Gönderilen komutu kopyaladım ve Terminal'e yapıştırdım ve Return tuşuna bastım ve işe yarıyor. Belki başka bir alternatif daha var, ama söylediğim yanlış değil.
mat

1
Bu bana yanlış cevap verdi. Çünkü swift hedef başına yapılandırılır. En iyi yanıt için @Krunal'dan aşağıdaki yanıta bakın.
Andrew Paul Simmons

Her proje için "doğru yol SWIFT_VERSION ayarlamaktır" kabul ediyorum. Bununla birlikte, 8.2 gibi önceki Xcode sürümlerinde, UCo'da hangi XCode sürümünün projede desteklendiğini açıkça belirtmez ve sadece kullanıcı arayüzünde "Eski Swift Dil Sürümünü Kullan" belirtilmez. Komut satırı yaklaşımı, mevcut maksimum hızlı sürümün ne olduğunu hızlı bir şekilde sorgulamak için son derece kullanışlıdır.
truedat101

104

Terminali açın ve şunu yazın:

swift -version

12
Bu mutlaka Xcode'un gördüğü hızlı sürüm değildir. Ayrıca, Xcode'a sahip olmadan hızlı olabilirsiniz.
asiby

64

Xcode 8.3'den itibaren Build Settings, Swift Language Versionhedefinizin kullandığı hızlı sürüm değerine sahip bir anahtar vardır.

Daha eski X kodları için bu çözümü kullanın, terminali açın ve aşağıdaki komutları yazın

Durum 1: Yalnızca bir Xcode Uygulaması yüklediniz

swift -version

Durum 2: Birden çok Xcode Uygulaması yüklediniz

  • Değiştir active developer directory( Hızlı Xcode_7.3.appkomutunu kontrol etmek istediğiniz Uygulama dizinindeki Xcode uygulama dosya adınızla aşağıdaki komutu değiştirin )

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

     swift -version

NOT: Xcode 8, varsayılan hızlı sürüm olarak swift 3.x kullanıyor olsa da, Xcode 8'den Xcode 8.2.x'e swift 2.3 kullanabilirsiniz. Kullanım Swift 2.3 için, sadece bayrak açmak Use Legacy Swift Language Versioniçin YESgelen Build Settingve XCode bu proje hedefi için Swift 2.3 kullanacaktır.


21

Hangi Swift sürüm Xcode'un kullanıldığını görebilir ve seçebilirsiniz:

Hedef -> Oluşturma Ayarları -> Hızlı Dil Sürümü :

resim açıklamasını buraya girin

Bu, Xcode 8.3 ve Xcode 9'da mevcuttur (eski sürümleri kontrol etmediniz)


2
Swift Language VersionXcode 8.2.1 projemde bir ayar olarak görünmüyor. Var Use Legacy Swift Language Version.
Chris Prince

1
@ChrisPrince Evet, önceki Xcode 8.x sürümlerinde Xcode 8.3 .... 'e kadar Swift Language Versionburada yoktu , = Swift 3 ve = Swift 2.3Build SettingsUse Legacy Swift Language VersionNoYes
William GP

17

Bu reddit yayını bana yardımcı oldu: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet

Xcode 8, varsayılan olarak Swift 3.0 kullanır. Ancak Swift 2.3'ü açabilirsiniz. Projenin Derleme Ayarlarına gidin ve 'Eski Swift Dil Sürümünü Kullan' seçeneğini YES olarak ayarlayın.

İyi eski reddit :)


1
Bunu 'Eski Swift Dil Sürümü Kullan' veya 'Eski'
Arama ile bulamıyorum

Swift Language Version'da en yeni Xcode Sürüm 8.3.2 (8E2002) kullanıyorum ve 3'ü hızlıca kullanıyorum. Şimdi bunu 2.3'i değiştirmek için değiştirmek istiyorum, ancak sadece bir seçenek swift 3.0 var ve 2. belirtilmemiş. peki bunun nasıl mümkün olabileceğini yönlendirir misiniz? mevcut projemde hızlı 2.3 almak için? @alexisSchreier
Arsal

14

Makinenizde yüklü olan hızlı swift sürümünü görmek için komut satırından şunu yazın:

swift --version

Apple Swift sürüm 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)

Hedef: x86_64-apple-darwin17.6.0

Bu, büyük olasılıkla yüklediğiniz Xcode'un uygulama mağazası sürümüne dahil olan sürümdür (değiştirmediyseniz).

Swift'in gerçek bir Xcode sürümü (örneğin bir beta) tarafından kullanılmakta olan gerçek sürümünü belirlemek istiyorsanız, komut satırından, Xcode paketi içinde swift ikilisini çağırın ve --version parametresini iletin.

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

Apple Swift sürüm 4.2 (swiftlang-1000.0.16.7 clang-1000.10.25.3)

Hedef: x86_64-apple-darwin17.6.0



1

Google Colab'dan Swift kullanıyorum. Colab'da nasıl kontrol edeceğiniz aşağıda açıklanmıştır.

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

Sonuç 5.0-dev


-1

Bonus katkısı: Jazzy belgeleriyle kullanım için temiz bir dize ayıklamak için özel bir node.js komut dosyası kullanıyorum. Geliştirme sürecinizde çalışacak bir yer bulabilirseniz, bundan faydalanabilirsiniz:

Bash betiğinden çağrıldı:

#!/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

Elbette regex kullanabilirsiniz, ama ne istersen yap:]


-1

Terminalde sadece swift komutunu girerek, Swift konsoluna giriş yaparken sürümü gösterecektir. (Aşağıdaki gibi bir şey)

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.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.