Xcode 9 स्विफ्ट भाषा संस्करण (SWIFT_VERSION)


115

मैंने हाल ही में xcode को संस्करण 9 में अपडेट किया है। इससे पहले Xcode 8.x में जब भी मैं pod updateइसे करने के लिए उपयोग करता हूं, तो मुझे कोड को स्विफ्ट 3 में परिवर्तित करने के लिए एक अपडेट कोड दिखाई देता है और ऐसा करने से त्रुटियां हल हो जाती हैं। लेकिन अब यह मुझे यह त्रुटि दे रहा है:

"स्विफ्ट भाषा संस्करण" (SWIFT_VERSION) बिल्ड सेटिंग को उन लक्ष्यों के लिए एक समर्थित मूल्य पर सेट किया जाना चाहिए जो स्विफ्ट का उपयोग करते हैं। यह सेटिंग बिल्ड सेटिंग एडिटर में सेट की जा सकती है।

इस त्रुटि के लिए मैंने कोशिश की है Build Settings > Swift Language Versionऔर यह स्विफ्ट 3.2 था लेकिन जैसा कि अपडेट कॉल ने कुछ पॉड्स को फिर से स्थापित किया है जैसे कि आलमोफायर और यह कोड को स्विफ्ट 3 में बदलने के लिए एक्सकोड 8.x स्थापित करने के लिए कहता है, इसलिए मुझे एक स्थापित करने की आवश्यकता है नवीनतम Xcode के साथ अतिरिक्त संस्करण? यदि हाँ, तो मैं Xcode 9 के साथ Xcode 8 कैसे स्थापित कर सकता हूँ?


व्युत्पन्न डेटा को साफ करने की कोशिश करें और Xcode 9.
iAviator

Xcode 8 में अपना स्विफ्ट संस्करण क्या है ??
संथोषकुमार

मुझे लगता है कि यह 8.3.3 था। यह xcode 9. से पहले नवीनतम था
चौधरी तल्हा

जवाबों:


181

आपके प्रश्न का उत्तर:
आप Apple डाउनलोड पोर्टल से Xcode 8.x डाउनलोड कर सकते हैं या Xcode 8.3.3 डाउनलोड कर सकते हैं (या देखें: Xcode का पुराना संस्करण कहां डाउनलोड करें ), यदि आपने प्रीमियम डेवलपर खाता (ऐप्पल आईडी) बनाया है। आप सिंगल (मैक) सिस्टम में Xcode 9 और Xcode 8.x दोनों के साथ इंस्टॉल और काम कर सकते हैं। (यह सुनिश्चित करें कि आप Command Line Toolsटर्मिनल के साथ काम करने के लिए Xcode के दोनों संस्करण का समर्थन कर रहे हैं (देखें: 'कमांड लाइन टूल' कैसे स्थापित करें ))


संकेत: अपने कोड को स्थानांतरित करने के लिए कैसे Xcode 9 संगत स्विफ्ट संस्करण (स्विफ्ट 3.2 या 4)
Xcode 9 से रूपांतरण / माइग्रेशन की अनुमति देता Swift 3.0हैSwift 3.2/4.0 केवल। इसलिए यदि आपकी परियोजना की स्विफ्ट भाषा का वर्तमान संस्करण 3.0 से नीचे है, तो आपको अपना कोड स्विफ्ट 3 संगत संस्करण में एक्सपीटी 8. टी का उपयोग करके माइग्रेट करना होगा।

यह सामान्य त्रुटि संदेश है जो Xcode 9 दिखाता है कि यह प्रवासन के दौरान 3.0 से नीचे स्विफ्ट भाषा की पहचान करता है।

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


स्विफ्ट 3.2 Xcode 9 और Xcode 8 दोनों द्वारा समर्थित है।

प्रोजेक्ट Project (सेलेक्ट योर प्रोजेक्ट टारगेट) ► बिल्ड सेटिंग्स bar (सर्चबार में टाइप in स्विफ्ट) स्विफ्ट कंपाइलर भाषा ► स्विफ्ट लैंग्वेज वर्जन list इसे खोलने के लिए भाषा सूची पर क्लिक करें।

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



Xcode 8 का उपयोग करके अपने स्रोत कोड को Swift 2.0 से 3.2 में बदलें और फिर Xcode 9 (Swift 3.2 या 4) के साथ जारी रखें।


अपने कोड के आसान माइग्रेशन के लिए, इन चरणों का पालन करें: (यह आपके Xcode टूल द्वारा समर्थित स्विफ्ट के नवीनतम संस्करण में बदलने में आपकी सहायता करेगा)

Xcode: मेनू: वर्तमान स्विफ्ट सिंटैक्स में Men गुप्त ▶ संपादित करें

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


9
यदि आप यहां आए हैं क्योंकि आप अभी (Dec 2018) कुछ स्विफ्ट 2 कोड को डस्ट कर रहे हैं, तो आपको यह जानकर निराशा होगी कि Xcode 8 Mojave पर नहीं चलता है।
बुगलाउफ़

53

ऑब्जेक्टिव सी प्रोजेक्ट्स के लिए Xcode 8 का उपयोग करके बनाया गया और अब Xcode 9 में खुलने पर, यह वही त्रुटि दिखा रहा है जैसा कि प्रश्न में उल्लेख किया गया है।

इसे ठीक करने के लिए, बिल्ड सेटिंग्स में + बटन दबाएं और नीचे दी गई छवि में दिखाए अनुसार उपयोगकर्ता-निर्धारित सेटिंग जोड़ें चुनें

सेटिंग का निर्माण

फिर बनाई गई नई पंक्ति में नीचे की तरह SWIFT_VERSIONकुंजी और 3.2मान जोड़ें ।

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

यह उद्देश्य सी परियोजनाओं के लिए त्रुटि को ठीक करेगा।


2
इससे मुझे मदद मिली। धन्यवाद।
एंड्रियास क्राफ्ट

9
यदि आप CocoaPods के साथ यह समस्या कर रहे हैं, तो आपको इस निर्माण सेटिंग को pods.xcodeproject अनुभाग में जोड़ने की आवश्यकता हो सकती है।
स्टीवर्ट मैकडोनाल्ड

1
इसने मेरे लिए काम किया, मुझे बिल्ड सेटिंग्स में 'ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES' को संशोधित करके '$ (विरासत में मिला)'
F-1

1
2 महीने बाद फिर से धन्यवाद
Jan

1
समाधान की सराहना करें।
user366584

4

Xcode 10 में एक नया Objective-C प्रोजेक्ट बनाने के बाद मैंने इसे प्राप्त किया, जब मैंने प्रोजेक्ट में एक कोर डेटा मॉडल फ़ाइल जोड़ी।

मुझे इसे ठीक करने के दो तरीके मिले:

  1. आसान तरीका: कोर डेटा मॉडल का फाइल इंस्पेक्टर ( - 1) खोलें और स्विफ्ट से ऑब्जेक्टिव-सी में भाषा बदलें

कोर डेटा मॉडल भाषा बदलें

  1. लंबा और अधिक खतरनाक तरीका

इस लाइन के साथ मॉडल में एक "सामग्री" फ़ाइल है:

<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="14460.32" systemVersion="17G5019" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">

में एक sourceLanguage="Swift"प्रविष्टि है। इसे बदलें sourceLanguage="Objective-C"और त्रुटि दूर हो जाती है।

"सामग्री" फ़ाइल खोजने के लिए, .xcdatamodeldXcode पर राइट क्लिक करें और "Show in Finder" करें। वास्तविक (खोजक) फ़ाइल पर राइट-क्लिक करें और "पैकेज सामग्री दिखाएँ" करें

भी: मॉडल की भाषा बदलने से स्विफ्ट में प्रबंधित ऑब्जेक्ट सबक्लास फ़ाइलों को बनाने से Xcode बंद हो जाएगा।


1

यह तब हो सकता है जब आपने कोर डेटा को किसी मौजूदा प्रोजेक्ट में जोड़ा हो।
जाँच करें:
<नाम> / <नाम> .xcdatamodeld / <नाम> .xcdatamodel / सामग्री
फ़ाइल।
इस फ़ाइल में एक प्रविष्टि "sourceLanguage" है जो (डिफ़ॉल्ट रूप से) "स्विफ्ट" पर सेट किया गया हो सकता है। इसे "ऑब्जेक्टिव-सी" में बदलें।


0

मैं सिर्फ नवीनतम स्विफ्ट कन्वर्ट बटन पर क्लिक करता हूं और ऐप टारगेट बिल्ड सेटिंग सेट करता हूं-> स्विफ्ट भाषा संस्करण: स्विफ्ट 4.0,

आशा है कि यह मदद करेगा।


0

यह समाधान तब काम करता है जब कुछ और काम नहीं करता है:

मैंने पूरी परियोजना को बदलने के लिए एक सप्ताह से अधिक समय बिताया और नीचे दिए गए समाधान पर आया:

सबसे पहले, प्रोजेक्ट से कोकोपोड्स निर्भरता को डी-इंटीग्रेट करें और फिर प्रोजेक्ट को नवीनतम स्विफ्ट संस्करण में परिवर्तित करना शुरू करें।

टर्मिनल में प्रोजेक्ट डायरेक्टरी पर जाएं और टाइप करें:

pod deintegrate

यह प्रोजेक्ट से कोकोपोड्स को डी-इंटीग्रेट करेगा और प्रोजेक्ट में कोकोआपॉड का कोई निशान नहीं छोड़ा जाएगा। लेकिन एक ही समय में, यह xcworkspace और podfiles को नष्ट नहीं करेगा। अगर वे मौजूद हैं तो ठीक है।

अब आपको xcodeproj (xcworkspace) नहीं खोलनी है और आपको बहुत सारी त्रुटियां मिलेंगी क्योंकि आपने अपने मुख्य प्रोजेक्ट्स में कोकोपोड्स निर्भरता विधियों को कॉल किया है।

तो उन त्रुटियों को दूर करने के लिए आपके पास दो विकल्प हैं:

  1. कोकोपोड्स लाइब्रेरी से आपके द्वारा उपयोग किए गए सभी कोड नीचे टिप्पणी करें।
  2. एक रैपर क्लास बनाएं जिसमें कोकोपीड्स लाइब्रेरी के समान डमी तरीके हों, और फिर उसे कॉल करें।

एक बार सभी त्रुटियां दूर हो जाने के बाद आप कोड को नवीनतम स्विफ्ट संस्करण में बदल सकते हैं।

कभी-कभी यदि आपको अजीब त्रुटियां हो रही हैं, तो व्युत्पन्न डेटा को साफ करने और फिर से प्रयास करें।


0

शायद आपको टूलचिन डाउनलोड करने की आवश्यकता है। यह त्रुटि तब होती है जब आपके पास स्विचर कंपाइलर का सही संस्करण नहीं होता है।


-3

मेरे चेतावनी के बाद बिल्ड सेटिंग्स में सीधे 2.x से 4.0 तक बदले जाने के बाद मेरे मामले में, सभी चेतावनी गायब हो गई।

ये चेतावनी फ़ोल्डर myprojectnameTestsऔर myprojectnameUITestsफ़ोल्डर से संबंधित हैं । मैंने ध्यान नहीं दिया और मैंने सोचा कि इसका सीधा संबंध एक्सकोड 7 से एक्सकोड 9 तक है और मुझे लगा कि मैं इस समस्या को हल नहीं कर सकता हूं और मुझे मिस्ड एक्सकोड 8 संस्करण को स्थापित करना चाहिए।

मेरे मामले में, मैंने इन फ़ोल्डरों को हटा दिया और सभी चेतावनी गायब हो गई, लेकिन आप इस फ़ोल्डर को फिर से बना सकते हैं और इसमें इसका उपयोग कर सकते हैं:

file > new > target > (uitest or unittest extensions)

और परीक्षण मामलों को बनाने के लिए इस लेख का उपयोग करें: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/04-writing_tw.html


और कोई मुझे बताए कि मेरी क्या गलती है !?
iman kazemayni

2
मैं व्यक्तिगत रूप से इसे अस्वीकार नहीं करूंगा, आपके उत्तर में कुछ भी गलत नहीं है, लेकिन ओपी के सवाल पर टिप्पणी करने के लिए सबसे अच्छी जगह होगी। इसके अलावा, आप stackoverflow.com/help/how-to-answer पर एक नज़र डाल सकते हैं जो प्रश्नों के उत्तर देने के सही तरीके के साथ आने में आपकी सहायता करेगा।
ग्रासब्यूरिटो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.