/ / मिश्रित स्विफ्ट और उद्देश्य-सी प्रोजेक्ट के साथ एक्सकोड 8 "मॉड्यूलनाम-स्विफ्टएचएच" हेडर नहीं मिला - आईओएस, ऑब्जेक्ट-सी, एक्सकोड, एक्सकोड 8

मिश्रित स्विफ्ट और उद्देश्य-सी प्रोजेक्ट के साथ एक्सकोड 8 "मॉड्यूलनाम-स्विफ्टएचएच" हेडर नहीं मिला - आईओएस, ऑब्जेक्ट-सी, एक्सकोड, एक्सकोड 8

मेरे पास मिश्रित स्विफ्ट और उद्देश्य-सी के साथ एक परियोजना हैएक्सकोड 8 में जो ऑब्जेक्टिव-सी कक्षाओं में तेजी से आयात करने के लिए उत्पन्न "मॉड्यूलनाम-स्विफ्ट.h" हेडर फ़ाइल का उपयोग करता है, लेकिन प्रीप्रोसेसर जेनरेट की गई हेडर फ़ाइल नहीं ढूंढ पाता है और आयात पर एक त्रुटि फेंकता है।

"लेक्सिकल या प्रीप्रोसेसर मुद्दा:" मॉड्यूलनाम-स्विफ्ट.h फ़ाइल नहीं मिली ""

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

परियोजना सिर्फ ठीक है, लेकिनप्रीप्रोसेसर हेडर के लिए त्रुटियों को फेंकता नहीं है और कक्षा के अंदर बुलाए गए किसी भी स्विफ्ट क्लास के लिए कोई सिंटैक्स हाइलाइटिंग या कोड पूरा नहीं होता है। यह उद्देश्य-सी में स्विफ्ट कक्षाओं के साथ काम करने का संघर्ष है जो एक्सकोड 8 द्वारा पहचाना नहीं गया है, लेकिन फिर भी ठीक है।

एक्सकोड 8 में प्रीप्रोसेसर को कैसे खुश किया जाए इस पर कोई विचार है?

उत्तर:

उत्तर № 1 के लिए 24

मैं बिल्कुल एक ही मुद्दा था। केवल एक लक्ष्य (गलती से) के उद्देश्य से एक नई फ़ाइल जोड़ने के बाद समाधान मिला और यह देखते हुए कि स्विफ्ट कक्षाओं को पढ़ने में कोई समस्या नहीं थी। तो, यदि आपके पास है एकाधिक लक्ष्य, और माइग्रेशन के बाद से आपको उन्हें बनाने और चलाने की आवश्यकता नहीं थी, आपको ऐसा करने का सुझाव दिया गया है।


जवाब के लिए 4 № 2

हमारे पास कई समस्याएं हैं जब यह समस्या है। अगर उद्देश्य-सी जेनरेटेड इंटरफेस हैडर नाम नव निर्मित लक्ष्यों के स्विफ्ट कंपाइलर में परिवर्तनीय मूल लक्ष्य के मान से अलग है। इसे मूल लक्ष्य के साथ उसी मान में बदलें। निम्न देखें:

परिवर्तन, newtargetname-Swift.h सेवा मेरे originaltargetname-Swift.h नए लक्ष्य के लिए

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


जवाब के लिए 2 № 3

इस समस्या को ठीक करने के लिए एक्सकोड 9.2, लंबे शोध के बाद मुझे पता चला कि "ऑब्जेक्टिव-सी जेनरेटेड इंटरफेस हैडर नेम" का नाम उत्पाद नाम के नाम पर रखा गया है "PRODUCTNAME-Swift.h"यहां छवि विवरण दर्ज करें


उत्तर के लिए 1 № 4

आपको इसे अपनी बिल्ड सेटिंग्स में जोड़ना होगा।

Xcode 8 में माइग्रेट करते समय कोई समस्या हो सकती है, जहां आपके पास होगा unspecified बिल्ड सेटिंग स्विफ्ट हेडर फ़ाइल में।

अगर से यह Killerz

के लिए जाओ सेटिंग्स बनाएं-> उद्देश्य-सी जेनरेटेडइंटरफेस हैडर नाम और मान को MyModule-Swift.h पर सेट करें (यह आमतौर पर पहले से सेट है, यह फ़ाइल नाम है जिसे आपको .m फ़ाइल पर आयात करने की आवश्यकता है #import "YourModule-Swift.h"


उत्तर के लिए 1 № 5

अगर

  • आपके उत्पाद के सामान्य लक्ष्य ठीक चलते हैं, लेकिन
  • आपके परीक्षण लक्ष्यों को चलाते समय आपको त्रुटि मिलती है ...

ध्यान दें कि प्रत्येक लक्ष्य उद्देश्य-सी जेनरेटेड इंटरफेस हैडर नाम के लिए एक अलग फ़ाइल नाम का उपयोग करता है (और उपयोग करना चाहिए).

इसका अर्थ यह है कि आप अपने उद्देश्य-सी में जेनरेट की गई हेडर फ़ाइल आयात नहीं कर सकते हैं .h फाइलें, क्योंकि वे परीक्षण लक्ष्य में नहीं मिले "

.h फ़ाइल का उपयोग करते समय आयात त्रुटि का स्क्रीनशॉट

इसके बजाय, आपको इन्हें स्थानांतरित करना चाहिए #import आपके उद्देश्य-सी में बयान .m (कार्यान्वयन फाइलें), जहां वे सफलतापूर्वक निर्माण करेंगे।


यदि आपको स्विफ्ट कक्षाओं को संदर्भित करने की आवश्यकता है .h फ़ाइल, उपयोग @class आदेश, उदाहरण:

//
//  ViewController.h
//  import-example
//

#import <UIKit/UIKit.h>

@class SomeSwiftClass;

@interface ViewController : UIViewController

- (NSString *) titleFromGenerator:(SomeSwiftClass *)generator;

@end