कैसे एक स्विफ्ट परियोजना में उद्देश्य-सी कोकोआपोड्स का उपयोग करें


84

क्या मैं स्विफ्ट परियोजना में स्विफ्ट का उपयोग करते हुए ऑब्जेक्ट-सी में लिखे गए कोकोपॉड का उपयोग कर सकता हूं?

क्या मैं सिर्फ ब्रिजिंग हेडर बनाता हूं? और यदि हां, तो क्या मैं स्विफ्ट में कोकोआपोड में पुस्तकालयों द्वारा परिभाषित वस्तुओं, वर्गों और क्षेत्रों तक पहुंच सकता हूं?

जवाबों:


170

आपके प्रश्न का मूल उत्तर है हां, आप CocoaPods के साथ निर्मित उद्देश्य-सी कोड का उपयोग कर सकते हैं।

अधिक महत्वपूर्ण सवाल यह है कि "ऐसे कामों का उपयोग कैसे करें?"
इस प्रश्न पर उत्तर use_frameworks!आपके में ध्वज पर निर्भर करता है Podfile:
आइए कल्पना करें कि आप नाम के साथ ऑब्जेक्टिव-सी पॉड का उपयोग करना चाहते हैं CoolObjectiveCLib

यदि आपकी पॉड फ़ाइल use_frameworks!ध्वज का उपयोग करती है :

// Podfile
use_frameworks!
pod 'CoolObjectiveCLib'

फिर आपको किसी भी पुल हेडर फ़ाइलों को जोड़ने की आवश्यकता नहीं है।
सब कुछ है कि आप की जरूरत है स्विफ्ट स्रोत फ़ाइल में आयात रूपरेखा है:

// MyClass.swift
import CoolObjectiveCLib

अब आप उन सभी वर्गों का उपयोग कर सकते हैं जो परिवाद में प्रस्तुत किए गए हैं।

यदि आपकी पॉड फ़ाइल use_frameworks!ध्वज का उपयोग नहीं करती है :

// Podfile
pod 'CoolObjectiveCLib'

फिर आपको ब्राइडिंग हेडर फ़ाइल बनाने और सभी आवश्यक उद्देश्य-सी हेडर आयात करने की आवश्यकता है:

// MyApp-Bridging-Header
#import "CoolObjectiveCLib.h"

अब आप उन सभी वर्गों का उपयोग कर सकते हैं जो आयातित हेडर में परिभाषित हैं।


पॉड .m फ़ाइलों के अंदर से स्विफ्ट कक्षाओं का उपयोग कैसे करें (यदि मैं इन पॉड्स को अनुकूलित करना चाहता हूं)?
जेहेलिया

1
मेरे पास मेरे स्विफ्ट प्रोजेक्ट के पोडफाइल में उपयोग किए गए_फ्रामवर्क थे और टोस्ट पॉड का उपयोग करना चाहते थे, जो वास्तव में एक उद्देश्य-सी श्रेणी है। बस आयात करके UIView + टोस्ट ने मुझे संकलन त्रुटि दी: एक पंक्ति पर लगातार बयानों को '' द्वारा अलग किया जाना चाहिए;
चंचल राज

@ चंचलराज UIView+Toastआपके पॉड का नाम है? यदि आयात रूपरेखा का उपयोग करने की कोशिश नहीं की जाती है जो आपके पॉड के नाम से मेल खाती है।
व्लाद पापको

1
मैंने एक ही कोड का उपयोग करके स्विफ्ट फाइल में objc कोड का उपयोग किया है, लेकिन यह मुझे इस तरह के मॉड्यूल "POD NAME" में कोई त्रुटि नहीं देता है, क्या मुझे किसी अन्य ध्वज को स्थापित करने की आवश्यकता है
प्रशांत तुकड़िया

4
यदि आप use_frameworks के साथ समस्याओं का सामना कर रहे हैं ! , यह इसलिए हो सकता है क्योंकि आयात विवरण सही प्रारूप में नहीं लिखे गए हैं। जैसे अगर पॉडफाइल होता है pod 'iOS-Echarts', तो आयात निम्नानुसार होगा: स्विफ्ट फ़ाइल : import iOS_Echarts ऑब्जेक्टिव-सी फाइल :#import <iOS_Echarts/iOS-Echarts.h>
कुशाल अशोक

2

पॉडफाइल में ध्वज का उपयोग करें use_frameworks! Podनिर्भरता में फ़ोल्डर संरचना में Xcode के अंदर , आप xxxxxxx-umbrella.hसमर्थन फ़ाइलों में जोड़ते हैं ।

आपके {PROJECT_NAME}-Bridging-Header.hउपयोग में:

#import "xxxxxxx/xxxxxxx-umbrella.h"

इससे मेरा काम बनता है।



0

और लक्ष्य -> ​​बिल्ड सेटिंग्स -> उद्देश्य-सी ब्रिजिंग हैडर के लिए ब्रिजिंग हेडर फ़ाइल नाम जोड़ना न भूलें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.