सवाल स्विफ्ट प्रोजेक्ट में ऑब्जेक्टिव-सी फ्रेमवर्क आयात करते समय ब्रिजिंग हेडर में "फ़ाइल नहीं मिली" प्राप्त करना


मेरे पास एक स्विफ्ट प्रोजेक्ट है जिसके लिए मैं ओबीजेसी-आधारित ढांचे को आयात करने की कोशिश कर रहा हूं। ढांचा परियोजना के पथ के तहत एक निर्देशिका में स्थित है और परियोजना द्वारा एक्सकोड में संदर्भित किया गया है। यह परियोजना के 'बिल्ड चरण' पृष्ठ में "पुस्तकालयों के साथ लिंक बाइनरी" में भी जोड़ा गया है।

हालांकि, किसी कारण से, मुझे ब्रिजिंग-हेडर फ़ाइल में ढांचे को शामिल नहीं किया जा सकता है। मुझे निम्नलिखित त्रुटि मिलती है:

BridgingHeader.h:5:9: error: 'Parse/Parse.h' file not found
#import <Parse/Parse.h>
        ^
<unknown>:0: error: failed to import bridging header 'BridgingHeader.h'

जिन चीजों को मैंने चेक किया है:

  1. "उद्देश्य-सी संगतता शीर्षलेख स्थापित करें" को "हाँ" पर सेट किया गया है।
  2. शीर्षलेख खोज पथ में ढांचे के पथ शामिल हैं।

मुझे यकीन है कि मुझे कुछ याद आ रहा है, इसलिए यदि किसी के पास कोई सुराग है, तो यह बहुत अच्छा होगा।


76
2017-12-16 01:23


मूल


मैं लाइब्रेरी पथ डालना भूल गया Header Search Paths, इस मामले में सवाल मदद की: डी - Aishwat Singh


जवाब:


एक समाधान मिला:

  • "उद्देश्य-सी ब्रिजिंग हैडर" सेटिंग (उर्फ SWIFT_OBJC_BRIDGING_HEADER) लक्ष्य स्तर पर सेट किया जाना चाहिए, न कि परियोजना स्तर। परियोजना स्तर पर सेटिंग मान को हटाना सुनिश्चित करें।

(मेरे लिए, यह एक एक्सकोड बग की तरह लगता है, क्योंकि मुझे नहीं पता कि यह इसे क्यों ठीक करता है)।


64
2018-01-18 06:26



यह वास्तव में अजीब है, मुझे एक ही त्रुटि थी और यह पता चला कि मेरे पास प्रोजेक्ट स्तर पर हेडर परिभाषित किया गया था। भले ही मैंने इसे पहले से ही लक्ष्य स्तर पर परिभाषित किया था, फिर भी मुझे इसे तृतीय-पक्ष फ्रेमवर्क जोड़ने की अनुमति देने के लिए परियोजना स्तर से निकालना पड़ा। यह बदनाम लगता है जैसे यह एक एक्सकोड बग है। - Jojodmo
मैंने ऐसा किया, लेकिन यहां काम नहीं किया। एक्सकोड 6.2 का उपयोग करना। - Marco Almeida
@MarcoAlmeida, यदि आपके पास परीक्षण लक्ष्य है, तो उस से "उद्देश्य-सी ब्रिजिंग हैडर" सेटिंग को निकालने का प्रयास करें। यह मदद करनी चाहिए। - Davlat Mirmanov
अविश्वसनीय। धन्यवाद। - Darren
सुनो! यहां एक ही समस्या है :( हालांकि यह ऊपर वर्णित विधि के साथ हल नहीं किया गया है ... - Michael K


मेरे साथ भी वही दिक्कत है। मैंने अपने सभी आयातों को बदल दिया #import "HMSegmentedControl.h" सेवा मेरे #import <HMSegmentedControl/HMSegmentedControl.h> उदाहरण के लिए।


51
2018-02-12 11:13



मेरे लिए काम नहीं किया - Hernan Arber
धन्यवाद। यह मेरे लिए काम किया। :) - Muhammad Ibrahim
कोकोपोड के साथ काम करने के लिए यह आवश्यक है। ब्रिजिंग हेडर में #import "abc.h" उपयोगकर्ता #import <abc / abc.h> अंगूठे के रूप में कभी भी एक फली आयात नहीं करते हैं। - NaXir
तुम भगवान हो! इस लिए आपका बहुत - बहुत धन्यवाद। - Alper
बहुत बहुत धन्यवाद यह काम किया !! - Venu Gopal Tewari


मुझे अपना जोड़ना पड़ा lib उपयोगकर्ता शीर्षलेख खोज पथ में निर्देशिका:

test target settings - user header search path

मेरे मामले में lib निर्देशिका में शामिल हैं .a-पुस्तकालय फ़ाइल और कुछ शीर्षलेख फ़ाइलें। ये ब्रिजिंग हेडर फ़ाइल में शामिल हैं। हालांकि, स्विफ्ट कंपाइलर उन्हें नहीं ढूंढ पाएगा। केवल जब मैंने जोड़ा ${PROJECT_DIR}/lib उपयोगकर्ता शीर्षलेख खोज पथ में यह परीक्षण लक्ष्य बनाया गया।

(मैं मैवरिक्स 10.9.5 पर एक्सकोड 6.2 का उपयोग कर रहा हूं)


21
2018-04-27 18:02



मैं मुख्य लक्ष्य के शीर्षलेख खोज पथ में पॉड्स / * जोड़कर इस समस्या को हल कर सकता हूं। दिलचस्प बात यह है कि स्विफ्ट फ्रेमवर्क को मेरे लक्ष्य पर निर्भरता के रूप में जोड़ने से पहले मुझे यह समस्या नहीं थी। एक्सकोड 7 बीटा 6। - bizz84
यह वही था जो मेरे लिए काम करता था। मेरे पास मेरे प्रोजेक्ट में एक ढांचा शामिल है जिसमें लाइब्रेरी (.a) है। मुझे उपयोगकर्ता शीर्षलेख खोज पथ में लाइब्रेरी के लिए शीर्षलेखों के लिए एक खोज पथ बनाना पड़ा। - Chris Livdahl
पॉड्स / लाइब्रेरी फ़ोल्डर को भी आयात करना था, बहुत बहुत धन्यवाद! - thibaut noah


एक पूरी तरह से अलग कारण के साथ, हम एक ही त्रुटि संदेश का सामना करना पड़ा।

सेट अप:

  • ऐप लक्ष्य, सभी ओबीजे-सी कोड
  • एक त्वरित स्विफ्ट टेस्ट केस और एप कोड का जिक्र करते हुए ब्रिजिंग हेडर के साथ यूनिट टेस्ट लक्ष्य

जब हमने दूसरा स्विफ्ट टेस्ट केस जोड़ा, एक साफ (या एक टीम साथी मशीन पर) के बाद, हमने इकाई परीक्षण लक्ष्य बनाते समय यह त्रुटि देखी।

यह इकाई परीक्षण लक्ष्य में एक डमी ओबीजे-सी कक्षा जोड़कर तय किया गया था।


18
2018-03-06 23:30



धन्यवाद। पूरी तरह से कोई समझ बनाने के बावजूद यह पूरी तरह से काम किया। - Curtis Steckel
मैं बाद में डमी ओबीजे-सी कक्षा को हटाने में सक्षम था। मेरा अनुमान है कि इस समाधान का दुष्प्रभाव एक परीक्षण-लक्ष्य-विशिष्ट ब्रिजिंग हेडर का निर्माण है, जो बदले में (मुझे संदेह है) एक्सकोड को होस्ट एप्लिकेशन के ब्रिजिंग हेडर को अनदेखा करने का कारण बनता है। - clozach
उपरोक्त परिशिष्ट: एक स्वच्छ निर्माण करने के बाद, मैंने संकलन के दौरान एक सेगमेंटेशन गलती 11 प्राप्त करना शुरू कर दिया। कुछ परीक्षण और त्रुटि के बाद, ऐसा प्रतीत होता है कि डमी। एम फ़ाइल मौजूद है, लेकिन यह कर सकते हैं खाली रहो पागलपन। - clozach
मेरे परीक्षण लक्ष्य में एक डमी ओबीजेसी कक्षा जोड़ना, इसे मेरे लिए तय कर दिया! - neoneye


यह किसी भी तरह से मेरे लिए चाल है:

  • स्वच्छ परियोजना
  • स्वच्छ निर्माण फ़ोल्डर
  • एक्सकोड पुनरारंभ करें

4
2017-08-04 15:11



जेनेरिक उत्तरों के साथ आओ मत मारो और चाल का प्रयास करें। - Nico
यह विशेष हिट और कोशिश करने की चाल के लिए बहुत कम प्रयास की आवश्यकता होती है, इसलिए आपको अन्य समाधानों के बारे में सोचने के दौरान प्रयास करने में कोई दिक्कत नहीं होनी चाहिए। ;) - Hlung


खैर यह थोड़ा अजीब है लेकिन मुझे लगता है कि आपको अपने मुख्य लक्ष्य लक्ष्य से सभी शीर्षकों को लोड करने के लिए अपने परीक्षण लक्ष्य के "कॉपी बंडल संसाधन" चरण में संसाधन जोड़ना होगा। मेरे मामले में, मैंने जोड़ा main.storyboard और यह त्रुटि का ख्याल रखा।

enter image description here


3
2018-04-28 16:20



कोई विचार नहीं, लेकिन यह मेरे लिए काम किया। - YSR fan
स्टोरीबोर्ड ???? यह ब्रिजिंग हेडर से कैसे संबंधित है ... - Alix


कोकोपोड्स लाइब्रेरी कोकोइमेज हैशिंग के साथ स्थापित करते समय यह त्रुटि दिखाई दी। समस्या यह थी कि खोज पथ गलत थे। तो लक्ष्य स्तर पर, बिल्ड सेटिंग्स -> खोज पथ -> शीर्षलेख खोज पथ, पथ गैर मौजूदा फ़ोल्डरों के अनुरूप थे, उदाहरण के लिए "$ {PODS_ROOT} / शीर्षलेख / सार्वजनिक / कोकोइमेज हैशिंग", जब फ़ोल्डर संरचना शीर्षलेख / सार्वजनिक / मौजूद नहीं था। मैंने पथ $ {PODS_ROOT} / CocoaImageHashing जोड़ा और त्रुटि गायब हो गई।


3
2018-02-23 11:09





मुझे कोई समस्या थी और खोजने के लिए 2 घंटे खर्च करने के बाद इसे ठीक कर दिया। मेरा पर्यावरण नीचे जैसा है:

कोकोपॉड 0.3 9.0

तेज 2.x

एक्सकोड 7.3.1

कदम:

  1. परियोजना पथ: PROJECT_NAME / PROJECT_NAME / your_bridging_header.h
  2. बिल्ड सेटिंग पर स्विफ्ट सेक्शन में, उद्देश्य-सी ब्रिजिंग हैडर होना चाहिए: PROJECT_NAME / your_bridging_header.h
  3. में your_bridging_header.h, से सभी घोषणाओं को बदलें  सेवा मेरे #आयात
  4. कक्षा में इस्तेमाल किया जा रहा है your_3rd_party। घोषित अपना_3rd_party आयात करें

2
2018-05-16 10:31



आपका उत्तर सही है और इसे और अधिक स्पष्ट करने के लिए तीसरे बिंदु पर @ jamesthakid जवाब जोड़ें। मेरे लिए काम किया धन्यवाद। - NaXir
"एच से #import" तक सभी घोषणाओं को बदलकर आपका क्या मतलब है? - Chris Gunawardena


अगर किसी की मदद करता है।

मेरे मामले में मेरी obj-c फ़ाइलों को एक संदर्भ फ़ोल्डर (xcode में नीले फ़ोल्डर) में जोड़ा गया था और हेडर उन्हें नहीं ढूंढ सका। बस फ़ोल्डर को, फ़ोल्डर से नहीं, खोजक से xcode और हल किया गया।


2
2017-07-13 22:44





मुझे भी यही समस्या थी। मेरे लिए कारण यह था कि मैं अपने ऐप और मेरे आज के विस्तार दोनों के लिए एक ही ब्रिजिंग-हेडर का उपयोग कर रहा था। माई टुडे एक्सटेंशन में पार्स शामिल नहीं है, लेकिन क्योंकि इसे ब्रिजिंग-हेडर में परिभाषित किया गया था, यह इसे देखने की कोशिश कर रहा था। मैंने अपने आज के विस्तार के लिए एक नया ब्रिजिंग-हेडर बनाया और त्रुटि असंतुष्ट हुई।


1
2017-12-30 16:14



मेरे पास एक ही मुद्दे की तरह नहीं लगता है। मेरे पास आज का विस्तार नहीं है। मेरे मामले में, मैं ऐप के लिए ब्रिजिंग हेडर का उपयोग कर रहा हूं, और पार्स फ्रेमवर्क ऐप निर्भरताओं में शामिल है। यह त्रुटि अन्य ढांचे के लिए भी होती है, न केवल पार्स। - Dia Kharrat


मेरा ढांचा पहले काम कर रहा था और अचानक काम करना बंद कर दिया, और इनमें से कोई भी जवाब मेरे लिए काम नहीं कर रहा था। मैंने बिल्ड चरण> लाइब्रेरी के साथ लिंक बाइनरी में ढांचे को हटा दिया, और इसे दोबारा जोड़ा। फिर से काम शुरू किया।


1
2018-02-19 15:34