दिलचस्प पोस्ट
मैं ArrayList से दोहराए गए तत्वों को कैसे निकालूं? मुख्य () के लिए तर्क क्या हैं? एएसपी। नेट एमवीसी 3 में दूसरे के मूल्य से संबंधित एक फ़ील्ड को कैसे मान्य किया जाए भयानक फ़ॉन्ट फ़ॉन्ट अनुकूलित करने के लिए जोड़ें जावा में एक सरणी सॉर्ट करें बिल्कुल सेट तत्वों के साथ, मैं सभी सेटों को कैसे प्राप्त कर सकता हूं? दिशा में माउस 2 डी रोटेशन माउस बिंदु .htaccess के साथ निर्देशिका (सभी उप-निर्देशिकाएं) में PHP अक्षम करें जावा में एक विधि का डिफ़ॉल्ट दायरा क्या है? त्रुटि प्राप्त हो रही है "फ़ॉर्म सबमिशन रद्द कर दिया क्योंकि फ़ॉर्म कनेक्ट नहीं है" SQL सर्वर: गलत संस्करण 661 संलग्न करें एक स्ट्रिंग एन्क्रिप्ट और डिक्रिप्ट करें थ्रेडपूल एक्सक्लोरर को कतार से पहले थ्रेड्स को अधिकतम करने के लिए कैसे प्राप्त करें? SQL कथन के साथ प्रतिशत की गणना कैसे करें सभी शाखाओं को खींचने और पुश करने के लिए git सेट करें

उद्देश्य सी क्लास से कॉल स्विफ्ट फ़ंक्शन

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

मेरे लिए समारोह स्विफ्ट से ऑब्जेक्टिव सी के लिए कॉल करना आसान था लेकिन मेरे पास रिवर्स के लिए एक समस्या है।

इसलिए मैंने एक साधारण वर्ग "सिस्टम। स्विच" बना दिया है

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

अब मैं यहाँ और दस्तावेज का पालन ​​करने की कोशिश की है <…> – Swift.h फ़ाइल मैंने यह लिखा है

 @class System; @interface System : NSObject -(void)printSome; @end 

और मैंने इसे अपने उद्देश्य सी क्लास के अंदर आयात किया है। मेरे उद्देश्य सी कोड के मेरे उद्देश्य सी क्लास (वर्तमान में यूआईवीयूआईयूआईयूटीओलोलर) के अंदर इस बिंदु पर मैंने "प्रिंट कुछ" विधि कॉल करने की कोशिश की है:

 - (void)viewDidLoad { [super viewDidLoad]; System * sis = [[System alloc] init]; [sis printSome]; //any additional setup after loading the view from its nib. } 

अब मैं का पालन करें त्रुटि है:

आर्किटेक्चर i386 के लिए अनिर्धारित प्रतीकों: "_OBJC_CLASS _ $ _ सिस्टम", से संदर्भित: "ObjectiveC_CLASS_That_Call_Swift_Object" में objc-class-ref में .o ld: प्रतीक (एस) आर्किटेक्चर के लिए नहीं मिला i386 clang: error: linker command exit code 1 -v को आमंत्रण देखने के लिए)

कोई मेरी मदद कर सकता है?

सभी का जिक्र

वेब के समाधान से एकत्रित समाधान "उद्देश्य सी क्लास से कॉल स्विफ्ट फ़ंक्शन"

समस्या हल हो गई, मैंने पहले अपने उद्देश्य सी क्लास में <ProductModuleName>-Swift.h नाम की एक नया .h फाइल बनाई और शामिल की, लेकिन जैसा कि मैंने बाद में खोजा, यह चरण आवश्यक नहीं है क्योंकि कंपाइलर आवश्यक फ़ाइल अदृश्य बनाता है।

बस अपनी कक्षा में <ProductModuleName>-Swift.h शामिल करें और इसे कार्य करना चाहिए।

हाँ धन्यवाद

यह अजीब है लेकिन यह काम करेगा

 1) Add @objc to Swift class 2) Add in .m #import "(ProjectName)-Swift.h" 3) Call from .h @class SwiftClass; 4)On SwiftClass click "Command" + Left Click (Apple Documantation) 5) To see "-Swift.h" -> click "Command" + Left Click 

ऐप इस वर्ग के इंटरफ़ेस को- SWift.h में उत्पन्न करेगा I

उदाहरण: SWIFT_CLASS ("_ TtC10Project17220PLHelper") @ इंटरफेस PLHelper

  • (शून्य) अधिसूचित करेंडाउनलोड कर रहा है: (NSDictionary *) userInfo;
  • (instancetype) init OBJC_DESIGNATED_INITIALIZER; @समाप्त

मान लें कि हमारे पास ProjectName "MyFirstProjectOnSwift" और तेज वर्ग का नाम "mySwiftClass" और उद्देश्य सी क्लास "MyObjectiveCLass" है

निम्नलिखित कदम हैं: –

  1. "MyObjectiveCLass.m" में #import "MyFirstProjectOnSwift-Swift.h" जोड़ें

  2. MyObjectiveCLass.h में @ वर्ग mySwiftClass जोड़ें;

  3. फिर MyObjectiveCLass.m में

    mySwiftClass * myClass = [mySwiftClass नया]; {किसी भी तरीके से इस तरह की कॉल करें, जहां कहीं भी आप तेज विधि कॉल करना चाहते हैं।}

  4. [myClass विधिनाम];

-Swift.h फ़ाइल की जांच करें, जिसमें उद्देश्य- C में आपकी .m फ़ाइल पर आयात है:

 #import <YourProjectName-Swift.h> 

उस पंक्ति पर क्लिक करें, और बायाँ क्लिक करें – परिभाषा पर कूदो।

इस फाइल को स्वचालित रूप से शामिल किया जाना चाहिए, मैन्युअल रूप से नहीं।

अगर आप अभी भी <ProductModuleName>-Swift.h आयात करने के बाद भी अपनी कक्षा नहीं देख रहे हैं

सुनिश्चित करें कि आपका क्लास एक देशी वर्ग (जैसे UIViewController ) उप- UIViewController कर रहा है या कम से कम अगर यह केवल एक उपयोगिता वर्ग है, तो उसे उप- NSObject आपकी कक्षा अब दिखाना चाहिए