मेरे पास मिश्रित स्विफ्ट और उद्देश्य-सी के साथ एक परियोजना हैएक्सकोड 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
फाइलें, क्योंकि वे परीक्षण लक्ष्य में नहीं मिले "
इसके बजाय, आपको इन्हें स्थानांतरित करना चाहिए #import
आपके उद्देश्य-सी में बयान .m
(कार्यान्वयन फाइलें), जहां वे सफलतापूर्वक निर्माण करेंगे।
यदि आपको स्विफ्ट कक्षाओं को संदर्भित करने की आवश्यकता है .h
फ़ाइल, उपयोग @class
आदेश, उदाहरण:
//
// ViewController.h
// import-example
//
#import <UIKit/UIKit.h>
@class SomeSwiftClass;
@interface ViewController : UIViewController
- (NSString *) titleFromGenerator:(SomeSwiftClass *)generator;
@end