ios - Xcode का उपयोग करके "ऐसा कोई मॉड्यूल नहीं" त्रुटि हो रही है, लेकिन ढांचा है




swift (20)

मैं वर्तमान में स्विफ्ट में कोडिंग कर रहा हूं, और मुझे एक त्रुटि मिली है:

ऐसा कोई मॉड्यूल सामाजिक नहीं

लेकिन मुझे समझ में नहीं आता है, क्योंकि मॉड्यूल मेरे प्रोजेक्ट में है, "लिंक्ड फ्रेमवर्क एंड लाइब्रेरी" और "एंबेडेड बायनेरिज़" में घोषित किया गया है।

फ्रेमवर्क ऑब्जेक्टिव-सी में है, इसलिए मैंने इसके लिए ब्रिज हैडर लिखा।

कृपया, मैं Xcode को फ्रेमवर्क को कैसे पहचान सकता हूं?


Xcode 10.1 में मेरे लिए समाधान फ़ाइल मेनू में वर्कस्पेस सेटिंग्स पर बिल्ड सिस्टम को बदलना था। यह न्यू बिल्ड सिस्टम के लिए डिफ़ॉल्ट रूप से सेट है, कि लिगेसी बिल्ड सिस्टम में बदल गया है और इसने चाल चली।


इसके लायक क्या है (मैं Xcode 7.2 / Swift 2 का उपयोग करके इसके लिए नया हूं), लेकिन मैंने देखा कि प्रोजेक्ट डायरेक्टरी में लाइब्रेरी से सिर्फ .swift फाइल होने से स्वचालित रूप से आपको इस तक पहुंच मिल जाती है और इसके लिए स्टेटमेंट का उपयोग करने की आवश्यकता नहीं होती है।

उदाहरण: मैं SwiftyJSON का उपयोग कर रहा हूं और परियोजना में SwiftyJSON.swift फाइल होने के बाद मुझे बस जरूरत थी। using कथन वास्तव में मुझे 'इस तरह का कोई मॉड्यूल नहीं' त्रुटि दे रहा था और इसे बाहर निकालकर इसे हल कर दिया, और यह ठीक काम करता है।


ठीक है, मेरे लिए एक ही समस्या का समाधान कैसे किया गया था कि यह कार्यशील निर्देशिका के सापेक्ष व्युत्पन्न डेटा स्थान को डिफ़ॉल्ट रखने के बजाय सेट किया गया था। वरीयताओं में जाओ xcode। प्राथमिकताओं में स्थान टैब पर जाएं और व्युत्पन्न डेटा को सापेक्ष में सेट करें। आशा है ये मदद करेगा।


निम्नलिखित चरणों ने मेरे लिए काम किया।

  1. एक्सकोड से बाहर निकलें
  2. टर्मिनल में "pod update" चलाएं
  3. .xcworkspace खोलें और फिर से निर्माण करें।

मुझे FacebookSDK को लोड करने में समान समस्या थी, मैंने बिल्ड सेटिंग्स में खोज पथों को फ्रेमवर्क करने के लिए ~ / Documents / FacebookSDK (खोज करें कि आपके फ्रेमवर्क कहां हैं) जोड़े और उसके बाद मैं FBSDKShareKit मॉड्यूल आयात करने में सक्षम था


मुझे उसी के लिए त्रुटि हो रही थी

import Firebase

लेकिन फिर ध्यान दिया कि मैं पॉड को मुख्य लक्ष्य खंड में नहीं जोड़ रहा था, बल्कि केवल पॉडफाइल में टेस्ट और टेस्टयूआई के लक्ष्यों को जोड़ रहा था।

आज्ञा के साथ

pod init

एक एक्सकोड स्विफ्ट परियोजना के लिए, निम्नलिखित पॉडफाइल उत्पन्न होता है

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'MyApp' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyApp

  target 'MyAppTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'MyAppUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

इसलिए, यह सुनिश्चित करने की आवश्यकता है कि कोई किसी उपयुक्त प्लेसहोल्डर को पॉड जोड़ता है।


मुझे पूरा यकीन नहीं है कि मार्टिन आर इस सवाल के जवाब में टिप्पणी करने से क्यों कतराते हैं:

सुनिश्चित करें कि आपने फ्रेमवर्क के आयात को केवल छोड़ने की कोशिश की है क्योंकि यह पहले से ही ब्रिजिंग हेडर के साथ जोड़ा गया है

उम्मीद है की यह मदद करेगा


मुझे भी कुछ दिन पहले वही त्रुटि आई थी। यहाँ मैंने समस्या का समाधान कैसे किया है:

त्रुटि "मॉड्यूल नहीं मिला"

  • अपने रूट प्रोजेक्ट डायरेक्टरी में पॉडफाइल बनाएं
  • कोकोपोड्स स्थापित करें (स्विफ्ट और आईओएस परियोजनाओं के लिए एक निर्भरता प्रबंधक)
  • पॉड इंस्टॉल चलाएं
  • प्रोजेक्ट बिल्ड सेटिंग्स पर जाएं:

    • स्विफ्ट कंपाइलर के तहत ऑब्जेक्टिव-सी ब्रिजिंग हैडर खोजें - कोड जनरेशन (यदि आपको यहां स्विफ्ट कंपाइलर नहीं मिल रहा है, तो शायद प्रोजेक्ट में एक नई स्विफ्ट फाइल जोड़ें)
    • लाइब्रेरी हेडर फ़ाइल को बाईं ओर से ब्रिजिंग हेडर पर खींचें और छोड़ें (छवि संलग्न देखें)
  • एक नई ब्रिजिंग हेडर फ़ाइल बनाएँ: उदाहरण के लिए TestProject-Bridging-Header.h और स्विफ्ट कंपाइलर के नीचे रखें → ऑब्जेक्टिव-सी जेनरेटेड इंटरफ़ेस हैडर नाम (संदर्भ, ऊपर दी गई छवि देखें)

  • TestProject-Bridging-Header.h फ़ाइल में, #import "Mixpanel / Mixpanel.h" लिखें
  • आपकी स्विफ्ट फ़ाइल में कोड होना चाहिए: इंपोर्ट मिस्पेल (यानी लाइब्रेरी का नाम)

बस इतना ही।


मेरे पास कोकोपोड्स और स्विफ्ट का उपयोग करने का एक ही मुद्दा था। मुझे पॉडफाइल में निम्नलिखित लाइनें नज़र नहीं आईं:

# Uncomment this line if you're using Swift
# use_frameworks!

इसलिए, मुझे केवल इतना करना था:

# Uncomment this line if you're using Swift
use_frameworks!

... और यह काम :)


मेरे मामले में ऐप IPHONEOS_DEPLOYMENT_TARGET 9.3 पर सेट किया गया था, जबकि मेरी नई बनाई गई रूपरेखा में इसे 10.2 पर सेट किया गया था

अंतर्निहित निर्भरताएं रिज़ॉल्वर ने मेरे नए ढांचे को नजरअंदाज कर दिया क्योंकि लक्ष्य प्लेटफॉर्म की आवश्यकताएं एप्लिकेशन की आवश्यकताओं से अधिक हैं।

मेरे अनुप्रयोग परिनियोजन से मेल करने के लिए ढाँचा iOS परिनियोजन लक्ष्य समायोजित करने के बाद संकलित लक्ष्य को सफलतापूर्वक संकलित और लिंक किया गया।


मेरे लिए सक्रिय आर्किटेक्चर बनाएँ केवल चयनित कॉन्फ़िगरेशन के लिए हां पर सेट किया गया था। इसने यह चाल चली:

बाएं प्रोजेक्ट नेविगेटर से "पॉड्स" का चयन करें> "बिल्ड सेटिंग्स चुनें"> केवल सक्रिय वास्तुकला का निर्माण करें


मेरे लिए क्या काम किया this एक और सवाल का हल है। Xcode को बंद करना और प्रोजेक्ट को कार्यक्षेत्र के रूप में फिर से खोलना।
अपने प्रोजेक्ट फ़ोल्डर में जाएं और .xcodeworkspace फ़ाइल खोलें।
एक बार जब आप कार्यक्षेत्र (प्रोजेक्ट के बजाय) खोलते हैं, तो पॉड्स को प्रोजेक्ट नेविगेटर में शीर्ष स्तर की परियोजना के रूप में दिखाई देना चाहिए।


मैंने अभी अपना कोकोपोड डिलीट किया। फिर, मैंने इसे हटाने के लिए एक पॉड इंस्टॉल किया। फिर, मैंने इसे अपने पॉडफाइल में वापस जोड़ा और इसे फिर से स्थापित किया। इससे काम बन गया। यकीन नहीं है कि क्यों।


मैंने इसके साथ तय किया

लक्ष्य -> ​​सामान्य -> ​​लिंक किए गए ढांचे और पुस्तकालय

Workspace फ़ोल्डर में सबसे ऊपर जो फ्रेमवर्क होना चाहिए, उसे जोड़ें। बहुत कष्टप्रद।


मैंने पाया कि Build Settings में Import Paths एक कस्टम (MySQL) मॉड्यूल के लिए गलत था। यह इंगित करने के बाद कि सही दिशा में संदेश गया था।


यदि आप TVOS जैसे प्लेटफ़ॉर्म के लिए निर्माण कर रहे हैं, तो सुनिश्चित करें कि आपके पास Apple TV (यानी मिलान) सिम्युलेटर चयनित है।

IOS सिम्युलेटर के साथ एक TVOS ऐप का निर्माण करने से मुझे यह त्रुटि मिली। निर्माण मुद्दों के सभी प्रकार की तलाश में एक घंटे का बेहतर हिस्सा बिताया ... दोहा।


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


यदि यह शुक्रवार की दोपहर या 1 बजे के बाद कभी भी हो:

xcodeproj बजाय xcworkspace को खोलने से इस तरह की त्रुटि होगी ...


सामान्य => लिंक्ड फ़्रेमवर्क और लाइब्रेरी में, मैंने अपना / ./Pods/Pods.xcodeproj जोड़ा और यह चाल ./Pods/Pods.xcodeproj


सुनिश्चित करें कि उप परियोजनाओं में आप का नामकरण "मूल" परियोजना से मेल खाता है। यदि कॉन्फ़िगरेशन नामकरण बिल्कुल (केस-संवेदी) से मेल नहीं खाता है, तो Xcode संग्रह प्रक्रिया को निरस्त कर देगा और "नो मॉड्यूल मॉड्यूल" त्रुटि दिखाएगा।

यही है, यदि आपके पास "AppStore" नामक कॉन्फ़िगरेशन के साथ "पैरेंट" प्रोजेक्ट है, तो आपको यह सुनिश्चित करना होगा कि सभी सबप्रोजेक्ट में भी यह कॉन्फ़िगरेशन नाम है।

मेरे संलग्न स्क्रीनशॉट देखें।






swift