स्विफ्ट 3.0 के साथ संकलित मॉड्यूल को स्विफ्ट 3.0.1 में आयात नहीं किया जा सकता है


87

मैंने Xcode को 8.1 GM में अपग्रेड किया है और अब SwiftyJSON के लिए नीचे की त्रुटि हो रही है। अन्य आयातित ढांचे काम करने लगते हैं। क्या स्विफ्ट 3 में काम करने के लिए मजबूर करने का कोई तरीका है जब तक कि स्विफ्टजॉन अपने ढांचे को अपग्रेड नहीं करता है? मैंने फ्रेमवर्क को आयात / अपडेट करने के लिए कार्टेज का उपयोग किया। मैंने भी Use Legacy Swift language versionकोई फायदा नहीं हुआ।

स्विफ्ट 3.0 के साथ संकलित मॉड्यूल को स्विफ्ट 3.0.1 में आयात नहीं किया जा सकता है: मॉड्यूल / स्विफ्टीजसन।

जवाबों:


171

SwiftyJson को Carthage द्वारा प्री-कम्पाइल किया जा रहा है। Precompiled डाउनलोड स्विफ्ट संस्करण 3.0 के साथ है। यह संकलक को शिकायत करता है कि संस्करण सही नहीं है। निम्नलिखित कमांड का उपयोग करना:

carthage update --platform iOS --no-use-binaries

स्विफ्टजसन (और कार्थेज के सभी अन्य ढांचे) स्थानीय रूप से स्विफ्ट (3.0.1) के स्थानीय संस्करण का उपयोग करके संकलित किए जाएंगे और कंपाइलर अब शिकायत नहीं करेगा।


7
आपने संभवतः मुझे एक घंटे की खोज के लिए बचाया था। धन्यवाद।
djv

24
आपका स्वागत है। ईमानदार होने के लिए कार्थेज थोड़ा अधिक बुद्धिमान होना चाहिए और स्विफ्ट संस्करण संख्या की जांच करनी चाहिए।
जिरिनिस्प

कोई अन्य विचार? क्योंकि इसने मेरे लिए काम नहीं किया, हालाँकि मेरे मामले में मुझे Unbox
Xernox

यह उत्कृष्ट था। क्या इसमें इसे एम्बेड करने का एक तरीका है Cartfileताकि मैं carthage updateबिना अतिरिक्त डेवलपर्स के बारे में जान सकूं या अतिरिक्त झंडे के बारे में चिंता कर सकूं?
क्रेग ओटिस

1
मेरे पास PromiseKit 4.0 के साथ इसी तरह की त्रुटि थी। XCode 8.0 से XCode 8.1 तक अपडेट करने के बाद मुझे EXC_BAD_ACCESS त्रुटि हुई। अंत में, PromiseKit को तेजी से 3.0.1 के साथ recompiled करना पड़ा और समस्या हल हो गई।
रिकार्डो अंजोस

21

DerivedData से ऐप चेच निकालें, और पुनर्निर्माण करें। त्रुटि को ठीक किया जा सकता है।

इस तरह से DerivedData पथ:

~/Library/Developer/Xcode/DerivedData/

मेरे लिए काम किया, मैं इस फोल्डर को हटा देता हूं, पॉड फ़ोल्डर को हटा देता हूं और "पॉड इंस्टॉल" का उपयोग करता हूं। और तय किया।
जोस पोज एस

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

मेरे लिए भी काम किया, धन्यवाद।
हास्य

10

सुनिश्चित करें कि आपने नया XCode 8.1 GM पैकेज अपने एप्लिकेशन फ़ोल्डर में रखा है। हम इस मुद्दे में भाग गए जब हम में से एक अपनी निर्भरता को अपडेट करने के लिए कार्थेज चला रहा था, लेकिन एप्लिकेशन फ़ोल्डर में XCode पुराने 8.0 एप्लिकेशन को प्रतिस्थापित नहीं किया था (8.1 जीएम डेस्कटॉप से ​​चल रहा था)।

आप यह सुनिश्चित करना चाहते हैं कि जब आप टर्मिनल में निम्नलिखित चलाते हैं: xcrun swift -versionकि यह वापस आ जाए Apple Swift version 3.0.1


यह मेरे लिए काम किया, धन्यवाद! इसके अलावा टर्मिनल में काम करने वाली कमान xrrun स्विफ्ट
-version

2
अभी भी वही मुद्दा मिल रहा है। किसी भी अन्य सुझाव
harsh_v

2
इस कमांड ने मेरे लिए काम किया: कार्टेज अपडेट --प्लेटफॉर्म आईओएस --यूज़-बायनेरिज़
एचएच 887

2
मैंने किया है carthage update --platform iOS --no-use-binariesऔर यह अभी भी काम नहीं करता है। मैंने अपने प्रोजेक्ट को साफ़ कर दिया है और Xcode को पुनः आरंभ किया है और मुझे अभी भी त्रुटि प्राप्त है मैं कुछ और कोशिश कर सकता हूं?
क्लिफ्टन लैब्रम

1
मैंने वो कोशिश की। यह लौटता हैApple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) Target: x86_64-apple-macosx10.9
क्लिफ्टन लैब्रम

9

Xcodeटर्मिनल पर नए के लिए डिफ़ॉल्ट अद्यतन करना मेरे लिए काम किया।

चरण 1: टर्मिनल पर नवीनतम के लिए Xcode संस्करण को अपडेट करने के लिए निम्न आदेश का उपयोग करें। संदर्भ

sudo xcode-select -switch <path/to/>Xcode.app

चरण 2: अब कार्टेज अपडेट कमांड का प्रयास करें

carthage update --platform iOS

9

बस नवीनतम अद्यतन देने के लिए:

कारगे ने 27 फरवरी, 2017 को संस्करण 0.20 जारी किया है ।

कार्टेज अब केवल प्री-बिल्ड बाइनरी का उपयोग करता है यदि उपलब्ध प्री-बिल्ड बाइनरी संगत है

कहा जा रहा है, आपको अब उपयोग करने की आवश्यकता नहीं है: --no-use-binariesअसंगत पूर्व-निर्माण ढांचे से बचने के लिए।

तो सुनिश्चित करें कि आपके पास कार्टेज संस्करण से अधिक है0.20 और बस करें:

carthage update --platform iOS

XCode 8.3.3 0.25 संस्करण में कार्टेज को अपडेट करने के बाद और नीचे करने के बाद, इसने मेरे लिए कार्टहाज अपडेट --platform iOS --no-use-binaries
anoop4real

@ anoop4real यह आपके बिना काम नहीं करता है --no-use-binaries? कार्टेजेज यह पता लगाने में सक्षम होना चाहिए कि क्या बाइनरी आपके कंपाइलर संस्करण के साथ संगत है। यदि संगत नहीं है, तो यह स्वचालित रूप से डाउनलोड किए गए बाइनरी को छोड़ने और स्थानीय रूप से फ्रेमवर्क बनाने के लिए माना जाता है।
कांकेन

5

जैसे @zirinisp ने कहा:

  1. आप निम्न आदेश का उपयोग कर सकते हैं:carthage update --platform iOS --no-use-binaries
  2. निम्नलिखित कमांड का उपयोग करना: xcrun swift -versionस्विफ्ट संस्करण को देखने के लिए
  3. ऐसा करें: Xcode->preferences->locationsव्युत्पन्न डेटा और अभिलेख डेटा को साफ़ करने के लिए, कमांड लाइन टूल को " Xcode 8.1" में बदलने के लिए सबसे महत्वपूर्ण है
  4. निम्नलिखित कमांड का उपयोग करना: xcrun swift -versionआप देख सकते हैं कि स्विफ्ट संस्करण 3.0.1 है
  5. सेट Use Legacy Swift Language Version = NO

मुझे आशा है कि यह आपकी मदद करेगा


1
  1. बीटा / जीएम संस्करण को स्थानांतरित करें यदि एक्सकोड / एप्लिकेशन फ़ोल्डर में है और इसे एक्सकोड-बीटा नाम दें

  2. के उत्पादन की जाँच करें:

    xcrun swift --version

इस कमांड को टर्मिनल में चलाने से, इसका आउटपुट स्विफ्ट संस्करण के साथ मेल खाना चाहिए जिसे आप एप्लिकेशन को संकलित करना चाहते हैं, क्योंकि कार्थेज स्थानीय स्विफ्ट संस्करण को निर्धारित करने के लिए इस कमांड के आउटपुट का उपयोग करता है।

  1. निम्नलिखित आदेश चलाकर टर्मिनल पर नवीनतम के लिए Xcode संस्करण अपडेट करें:

    sudo xcode-select -s /Applications/Xcode-beta.app/

  2. IOS के लिए पुस्तकालयों का निर्माण करें और कार्थेज को मौजूदा कमांड (वर्तमान में असंगत) को पहले से चल रहे बायनेरिज़ को डाउनलोड करने से रोकता है:

    carthage update --platform iOS --no-use-binaries

  3. साफ और निर्माण


0

मेरे पास पुस्तकालय के साथ बिल्कुल वही मुद्दा था XCTest_Gherkin, जो मेरे लिए काम करता था:

  1. Product-> Scheme->XCTest-Gherkin
  2. Product -> Build

आशा करता हूँ की ये काम करेगा। मैं कोकोपोड्स का उपयोग कर रहा हूं।


0

Xcode बिल्ड सेटिंग्स में सुनिश्चित करें कि आपके फ्रेमवर्क सर्च पाथ में उपयुक्त Carthage Build फ़ोल्डर है:

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