मैं कैसे देखूं कि मैं स्विफ्ट के किस संस्करण का उपयोग कर रहा हूं?


566

मैंने अभी Xcode के भीतर एक नई Swift परियोजना बनाई है। मैं सोच रहा हूँ कि स्विफ्ट का कौन सा संस्करण इसका उपयोग कर रहा है।

मैं Xcode या टर्मिनल में कैसे देख सकता हूं, मैं अपने प्रोजेक्ट के अंदर स्विफ्ट का कौन सा संस्करण उपयोग कर रहा हूं?


7
का खिताब इसके अलावा stackoverflow.com/questions/29140476/... मुझे कोई मिल जाए समानता इस सवाल के रूप में यह है इस सवाल का लेबल करने के लिए काफी है कि करने के लिए डुप्लिकेट । इस प्रश्न का सार यह नहीं है कि स्विफ्ट के संस्करण को प्रोग्रामेटिक रूप से कैसे खोजा जाए, बल्कि स्विफ्ट के संस्करण को सामान्य तरीके से कैसे ढूंढा जाए (टर्मिनल या एक्सकोड या आदि के माध्यम से)। यह एक बड़ा अंतर है।
डेविड स्नैब

जवाबों:


405

प्रोजेक्ट बिल्ड सेटिंग्स में एक ब्लॉक 'स्विफ्ट कंपाइलर - लैंग्वेज' होता है, जो की-वैल्यू फॉर्मेट में स्विफ्ट लैंग्वेज वर्जन के बारे में जानकारी स्टोर करता है। यह आपको अपने Xcode के लिए उपलब्ध (समर्थित) स्विफ्ट लैंग्वेज संस्करण और टिक मार्क द्वारा सक्रिय संस्करण भी दिखाएगा।

प्रोजेक्ट Project (सेलेक्ट योर प्रोजेक्ट टारगेट) ► बिल्ड सेटिंग्स Search (सर्च बार में टाइप v स्विफ्ट_वर्सन) स्विफ्ट कंपाइलर भाषा ift स्विफ्ट लैंग्वेज वर्जन ► इसे खोलने के लिए भाषा सूची पर क्लिक करें (और सूची में से किसी एक पर टिक मार्क होगा। -item, यह वर्तमान स्विफ्ट संस्करण होगा)।

आसान समझने के लिए इस स्नैपशॉट को देखें:

वर्णित क्षेत्रों के साथ xcode पर प्रकाश डाला गया


निम्नलिखित कोड की मदद से, प्रोग्रामेटिक रूप से आप अपने प्रोजेक्ट द्वारा समर्थित स्विफ्ट संस्करण पा सकते हैं।

#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

यहां प्लेग्राउंड ( Xcode 11.x के साथ ) का उपयोग करने का परिणाम है

यहाँ छवि विवरण दर्ज करें


10
मुझे लगता है कि यह सही उत्तर है। कॉलिंग टर्मिनल की तुलना में आसान। (खासकर यदि आपके पास
एक्सकोड

17
यह सही उत्तर है क्योंकि स्विफ्ट संस्करण को प्रति लक्ष्य के आधार पर कॉन्फ़िगर किया गया है।
एंड्रयू पॉल सिमंस

2
मैं अपने प्रोजेक्ट में Xcode 8.1
logoff

6
आप इस संपत्ति को Xcode के नवीनतम संस्करणों पर देख सकते हैं
पार्कह्या देव

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)

बेशक, यह मान लेता है कि आपका xcrunXcode की आपकी कॉपी पर सही ढंग से इशारा कर रहा है। अगर, मेरी तरह, आप Xcode के कई संस्करणों को टटोल रहे हैं, तो यह एक चिंता का विषय हो सकता है! यह सुनिश्चित करने के लिए कि यह है, कहो

$ xcrun --find swift

और Xcode के पथ को देखें जो यह आपको दिखाता है। उदाहरण के लिए:

/Applications/Xcode.app/...

अगर वह आपका Xcode है, तो आउटपुट से -version सटीक है। यदि आपको पुन: निर्माण करने की आवश्यकता है xcrun, तो Xcode के स्थान वरीयता फलक में कमांड लाइन टूल पॉप-अप मेनू का उपयोग करें।


8
आप xcode-select -pउस Xcode का पथ प्रिंट करने के लिए भी उपयोग कर सकते हैं जिसे xcrun उपयोग करेगा, और sudo xcode-select -s /path/to/Xcode.appइसे बदलने के लिए।
जैक लॉरेंस

4
मैंने अभी ios डेवलपमेंट सीखना शुरू किया है और मुझे आश्चर्य है कि xcode आपको स्विफ्ट के संस्करण का चयन करने की अनुमति नहीं देता है और न ही आपको GUI से संस्करण का पता करने देता है।
एलेक्स

@RadekWilczak मुझे नहीं पता कि आपका मतलब "क्या होना चाहिए" है। मैंने सिर्फ पोस्ट की गई कमांड को कॉपी किया और टर्मिनल में पेस्ट किया और रिटर्न मारा, और यह काम करता है। तो शायद एक और विकल्प है, लेकिन मैंने जो कहा वह गलत नहीं है।
मैट

1
इससे मुझे गलत जवाब मिला। क्योंकि स्विफ्ट प्रति लक्ष्य कॉन्फ़िगर किया गया है। सर्वोत्तम उत्तर के लिए @ क्रुनाल से नीचे का उत्तर देखें।
एंड्रयू पॉल सिमंस

मैं प्रति प्रोजेक्ट SWIFT_VERSION "सेट करने के लिए सही तरीका" से सहमत हूं। हालाँकि, पहले के Xcode संस्करणों में 8.2 की तरह, यह यूआई में स्पष्ट रूप से नहीं बताता है कि XCode के किस संस्करण को परियोजना में समर्थन दिया गया है, और यूआई में हाँ, नहीं, अनिर्दिष्ट के साथ "लिगेसी स्विफ्ट भाषा संस्करण का उपयोग करें" है। कमांड लाइन अप्रोच अत्यंत उपयोगी है जो कि उत्तर देने में सक्षम है कि अधिकतम स्विफ्ट संस्करण उपलब्ध है।
truedat101

104

टर्मिनल खोलें और लिखें:

swift -version

12
यह जरूरी नहीं कि स्विफ्ट का संस्करण है जो एक्सकोड देखता है। इसके अलावा, आप Xcode न होने पर स्विफ्ट कर सकते हैं।
asiby

64

Xcode 8.3 से आगे Build Settingsकी ओर Swift Language Versionआपके द्वारा उपयोग किए जा रहे स्विफ्ट संस्करण के मान के साथ कुंजी है।

पुराने Xcodes के लिए इस समाधान का उपयोग करें, टर्मिनल खोलें और निम्न कमांड टाइप करें

केस 1: आपने केवल एक Xcode ऐप इंस्टॉल किया है

swift -version

केस 2: आपने कई एक्सकोड एप इंस्टॉल किए हैं

  • स्विच 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 तक आप स्विफ्ट 2.3 का उपयोग कर सकते हैं, हालांकि Xcode 8 डिफ़ॉल्ट स्विफ्ट संस्करण के रूप में स्विफ्ट 3.x का उपयोग करता है। उपयोग तेजी से 2.3 के लिए, बस ध्वज को चालू Use Legacy Swift Language Versionकरने के लिए YESसे Build Settingऔर XCode है कि परियोजना के लक्ष्य के लिए स्विफ्ट 2.3 का प्रयोग करेंगे।


21

आप देख सकते हैं और चुन सकते हैं कि स्विफ्ट संस्करण Xcode किसका उपयोग कर रहा है:

लक्ष्य -> बिल्ड सेटिंग्स -> स्विफ्ट भाषा संस्करण :

यहाँ छवि विवरण दर्ज करें

यह Xcode 8.3 और Xcode 9 में उपलब्ध है (पुराने संस्करणों की जाँच नहीं की गई है)


2
Swift Language Versionमेरे Xcode 8.2.1 प्रोजेक्ट में सेटिंग के रूप में नहीं आता है। यह करता है Use Legacy Swift Language Version
क्रिस प्रिंस

1
@ क्रिस हैरिसन हाँ, Swift Language Versionयहाँ मौजूद नहीं था Build SettingsXcode 8.3 तक .... पूर्व Xcode 8.x संस्करणों में Use Legacy Swift Language Version, No= स्विफ्ट 3, और Yes= स्विफ्ट 2.3
विलियम GP

17

इस Reddit पोस्ट ने मेरी मदद की: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet

Xcode 8 डिफ़ॉल्ट रूप में स्विफ्ट 3.0 का उपयोग करता है। लेकिन आप स्विफ्ट 2.3 को चालू कर सकते हैं। प्रोजेक्ट की बिल्ड सेटिंग्स पर जाएं और 'यूज़ लिगेसी स्विफ्ट लैंग्वेज वर्जन' को YES पर सेट करें।

अच्छा पुराना रेडिट :)


1
मैं इसे 'यूज लिगेसी स्विफ्ट लैंग्वेज वर्जन' या 'लिगेसी'
जेरीझोऊ

मैं नवीनतम Xcode संस्करण 8.3.2 (8E2002) और स्विफ्ट 3 का उपयोग स्विफ्ट भाषा संस्करण में कर रहा हूं। अब मैं इसे स्विफ्ट 2.3 में बदलना चाहता हूं, लेकिन केवल एक विकल्प स्विफ्ट 3.0 है और दूसरा अनिर्दिष्ट है। तो क्या आप कृपया मार्गदर्शन करेंगे कि यह कैसे संभव होगा? मेरे वर्तमान परियोजना में तेजी से 2.3 पाने के लिए? @alexisSchreier
अर्साल

14

अपनी मशीन पर स्थापित कमांड लाइन से स्विफ्ट के डिफ़ॉल्ट संस्करण को देखने के लिए, निम्न टाइप करें:

swift --version

Apple स्विफ्ट संस्करण 4.1.2 (स्विफ्टलैंग -902.0.54 क्लैंग -902.0.39.2)

लक्ष्य: x86_64-apple-darwin17.6.0

यह सबसे अधिक संभावना है कि संस्करण जो आपके द्वारा इंस्टॉल किए गए Xcode के ऐप स्टोर संस्करण में शामिल है (जब तक कि आपने इसे बदल नहीं दिया है)।

यदि आप Xcode (उदाहरण के लिए एक बीटा, उदाहरण के लिए) के किसी विशेष संस्करण द्वारा उपयोग किए जा रहे स्विफ्ट के वास्तविक संस्करण को निर्धारित करना चाहते हैं, तो कमांड लाइन से, Xcode बंडल के भीतर स्विफ्ट बाइनरी को आमंत्रित करें और इसे पैरामीटर पास करें --version

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

Apple स्विफ्ट संस्करण 4.2 (स्विफ्टलैंग -1000.0.16.7 क्लैंग -1000.10.25.3)

लक्ष्य: x86_64-apple-darwin17.6.0



1

मैं Google Colab से Swift का उपयोग कर रहा हूं। कोलाब में इसकी जाँच कैसे करें।

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

परिणाम है 5.0-dev


-1

बोनस योगदान: मैं Jazzy प्रलेखन के साथ उपयोग के लिए एक साफ स्ट्रिंग निकालने के लिए एक कस्टम नोड .js स्क्रिप्ट का उपयोग कर रहा हूं। अगर आपको इसे अपनी देव प्रक्रिया में काम करने के लिए जगह मिल सकती है, तो आपको इसका कुछ उपयोग मिल सकता है:

बैश स्क्रिप्ट से मंगाई गई:

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

तुम भी regex का उपयोग कर सकते हैं, लेकिन आप जो कुछ भी पसंद करते हैं:]


-1

टर्मिनल में बस स्विफ्ट कमांड दर्ज करके, स्विफ्ट कंसोल पर लॉग इन करते समय यह संस्करण दिखाएगा। (नीचे जैसा कुछ)

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.

-1
  1. अपनी परियोजना का चयन करें
  2. सेटिंग बनाएँ
  3. "तेज भाषा" के लिए खोज
  4. अब आप देख सकते हैं कि आप अपने प्रोजेक्ट में किस स्विफ्ट संस्करण का उपयोग कर रहे हैं

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


कैसे है कि stackoverflow.com/a/46080904/1187415 में दिए गए पहले समाधान से अलग है ?
मार्टिन आर

अच्छी तरह से मैं मुख्य परियोजना निर्देशिका फेंक रहा हूँ और जब आप "स्विफ्ट भाषा" टाइप करते हैं, तो यह केवल बिल्ड सेटिंग्स में शीर्ष पर स्विफ्ट संस्करण दिखाते हैं, इसके अलावा कुछ भी नहीं ..
वायरल गोटी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.