ios - एक्सकोड MyProjectName-Bridging-Header.h मौजूद नहीं है




objective-c xcode (8)

उन लोगों के लिए जो ब्रिजिंग हैडर को हटा रहे हैं

मैं विपरीत तरीके से जा रहा था क्योंकि यहां के अधिकांश उत्तर यहां दिए गए हैं। मैं पहले ब्रिजिंग हेडर का उपयोग कर रहा था, लेकिन मुझे अब इसकी आवश्यकता नहीं थी। मैंने इसे अपनी परियोजना से हटा दिए जाने के बाद मुझे प्रश्न में उल्लिखित त्रुटि प्राप्त करना शुरू कर दिया। मैंने अपनी समस्या को हल करने के लिए निम्नलिखित कदम उठाए।

  1. लक्ष्य> [आपका ऐप लक्ष्य]> सेटिंग बनाएं> स्विफ्ट कंपाइलर - सामान्य> उद्देश्य-सी ब्रिजिंग हेडर पर जाएं और पथ हटाएं। (विचार के लिए @Donamite लिए धन्यवाद।) (आप इसे खोजने के लिए खोज बॉक्स में "ब्रिजिंग" टाइप करना शुरू कर सकते हैं।)
  2. व्युत्पन्न तिथि हटाएं। एक्सकोड> वरीयताएँ> स्थान पर जाएं और व्युत्पन्न डेटा फ़ोल्डर द्वारा ग्रे तीर पर क्लिक करें। फिर अपने प्रोजेक्ट फ़ोल्डर को हटा दें।

मैं अपने उद्देश्य-सी परियोजना में स्विफ्ट का उपयोग करना शुरू करना चाहता हूं। तो मैंने एक तेज वर्ग जोड़ा:

import Foundation
@objc class System : NSObject {
    @objc func printSome() {
        println("Print line System");
    }
}

और इसे एक .m फ़ाइल में आयात किया:

#import "MyProjectName-Swift.h"

मेरी परियोजना का निर्माण करते समय मुझे निम्न त्रुटि मिलती है:

Bridging header 'PathToMyProject/MyProjectName-Bridging-Header.h' does not exist

नोट: "बिल्ड सेटिंग्स-> स्विफ्ट कंपाइलर - कोड जनरेशन-> उद्देश्य-सी ब्राइडिंग हैडर" के तहत MyProjectName-Bridging-Header.h पर सेट है।

इस मुद्दे को हल करने के लिए मुझे क्या करना चाहिए?

किसी भी प्रकार की मदद की बेहद सराहना की जाती है।

संपादित करें: ब्रिजिंग-हेडर फ़ाइल: #if परिभाषित (__ has_include) && __has_include () # #endif शामिल है

#include <objc/NSObject.h>
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>

#if defined(__has_include) && __has_include(<uchar.h>)
# include <uchar.h>
#elif __cplusplus < 201103L
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif

#if defined(__has_attribute) && __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
#else
# define SWIFT_RUNTIME_NAME(X)
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted) 
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# else
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif

#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif

#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif

#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if defined(__has_attribute) && __has_attribute(objc_designated_initializer)
#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
#  define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"

#if defined(__has_feature) && __has_feature(modules)
#endif

#pragma clang diagnostic pop

आपकी प्रोजेक्ट में आपके पास ब्रिजिंग-हेडर एच फ़ाइल नहीं है, लेकिन आपकी प्रोजेक्ट में वह पथ है। इसके लिए आपको उस पथ को हटाना होगा ...

लक्ष्य फ़ाइल पर जाएं और बिल्ड सेटिंग्स का चयन करें ,----> स्विफ्ट कंपाइलर - सामान्य, और ब्रिजिंग-हेडर.h हटाएं। नीचे स्क्रीन शॉट्स का पालन करें ....

स्विफ्ट कंपाइलर - ब्रिजिंग में ब्रिजिंग-हेडर एच फ़ाइल हटाएं

अब आपको यह पसंद आया ...


नीचे दिए गए चरणों का पालन करें:

  1. ब्रिजिंग हेडर फ़ाइल हटाएं। । । (शायद आप मैन्युअल रूप से बनाते हैं) और;
  2. उद्देश्य-सी परियोजना में नई स्विफ्ट फ़ाइल बनाएं। । । (आयात नहीं, पहले इसे बनाएं)

शायद ये दो चीजें आपकी समस्या को हल करने में मदद करेंगी।


ब्रिजिंग हेडर बनाकर हमें ये कदम उठाने हैं।

  1. फ़ाइल-> नया-> आईओएस-> हैडर फ़ाइल , ब्रिजिंग फ़ाइल नाम जैसे "yourProjectName-Bridging-Header.h" दें।

  2. बिल्ड-सेटिंग्स-> उद्देश्य-सी ब्रिजिंग हेडर , बस ब्रिजिंग हेडर फ़ाइल का नाम दें "ProjectName-Bridging-Header.h"

    नोट: हेडर फ़ाइल ब्रिजिंग परियोजना के मुख्य रूट फ़ोल्डर में स्थित होना चाहिए जहां ".xcodeproj" फ़ाइल स्थित है। यदि प्रोजेक्ट के रूट फ़ोल्डर में ब्रिजिंग हेडर फ़ाइल को स्थानांतरित नहीं किया गया है। इस तरह एक्सकोड पुल फ़ाइल तक पहुंचने में सक्षम है।

  3. प्रोजेक्ट बनाएं, और ब्रिजिंग हेडर में आवश्यक फाइल आयात करें।


मेरे लिए यह मेरे उद्देश्य-सी ब्रिजिंग हेडर पथ के सामने $(SRCROOT) का उपयोग करने में मदद करता है।

$(SRCROOT)/swiftLibraries/swiftLibraries-Bridging-Header.h

मैंने पाया कि ब्रिजिंग हेडर फ़ाइल मैन्युअल रूप से बनाने और डिफ़ॉल्ट नाम और स्थान चुनने के बाद, ब्रिजिंग हेडर को प्रोजेक्ट निर्देशिका में रखा जाएगा, जो रूट निर्देशिका के अंतर्गत है।

इसे सेटिंग के लिए निम्न मान की आवश्यकता है: लक्ष्य> [आपका ऐप लक्ष्य]> सेटिंग बनाएं> स्विफ्ट कंपाइलर - कोड जनरेशन> उद्देश्य-सी ब्रिजिंग हैडर :

$(SRCROOT)/$(PROJECT_NAME)/$(PROJECT_NAME)-Bridging-Header.h 

ध्यान दें कि यदि आपकी परियोजना एक त्वरित मॉड्यूल (ढांचा) है, तो टिप्पणियों में बताया गया है, तो आप पसंद कर सकते हैं:

$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Header.h

स्विफ्ट परियोजना में ब्रिज फ़ाइल जोड़ने के लिए।

चरण 1. फ़ाइल पर जाएं> उद्देश्य-सी फ़ाइल के साथ कोको जोड़ें (अस्थायी उद्देश्य के लिए)

चरण 2. फिर निम्नलिखित पॉप अप दिखाई देगा

अब ब्रिजिंग हेडर बटन बनाएं दबाएं

किया हुआ
आपको बंडल में फ़ाइल फ़ाइल मिल जाएगी
धन्यवाद


ब्रिजिंग हैडर फ़ाइल मैन्युअल रूप से बनाना

सबसे पहले ब्रिजिंग हेडर फ़ाइल को हटाएं जो एक्सकोड बनाया गया है। और अपनी प्रोजेक्ट गोटो> सेटिंग्स बनाएं> कीवर्ड खोजें चुनें। स्विफ्ट कंपाइलर - कोड जनरेशन। उद्देश्य-सी ब्रिजिंग हेडर पर क्लिक करें, उस पथ को हटाएं। अब अपनी परियोजना को साफ करें।

अब नेविगेशन बार में अपनी परियोजना> विंडो का चयन करें। प्रोजेक्ट का चयन करें और वहां से अपना व्युत्पन्न डेटा हटाएं।

अब एक नई फाइल बनाएं, स्रोत का चयन करें और फिर शीर्षलेख फ़ाइल का चयन करें और अपनी ब्रिजिंग हेडर फ़ाइल बनाएं। फ़ाइल का नाम आपका प्रोजेक्टनाम होना चाहिए -ब्रिजिंग-हेडर एच। और फिर इसे बनाएं

अपने प्रोजेक्ट गोटो का चयन करें> सेटिंग्स बनाएं> कीवर्ड खोजें। स्विफ्ट कंपाइलर - कोड जनरेशन। ऑब्जेक्टिव-सी ब्रिजिंग हेडर पर क्लिक करें और अब इस उद्देश्य-सी ब्रिजिंग हेडर में पथ जोड़ें जैसे प्रोजेक्टनाम-ब्रिजिंग-हेडर.h

अब अपनी कक्षाओं को ब्रिजिंग हेडर फ़ाइल में आयात करें और आप इसे आसानी से अपना कोड संकलित कर सकते हैं।

जब आप अपनी फ़ाइल मैन्युअल रूप से बना रहे हों तो आपकी ब्रिजिंग हेडर फ़ाइल इस तरह दिखती है।





swift