जैसा कि Apple ने अपनी नई प्रोग्रामिंग भाषा स्विफ्ट को पेश किया , मुझे आश्चर्य है कि आप इसे मौजूदा ऑब्जेक्टिव-सी लाइब्रेरी के साथ कैसे एकीकृत कर सकते हैं जो कोकोपोड्स के माध्यम से उपलब्ध हैं ?
जैसा कि Apple ने अपनी नई प्रोग्रामिंग भाषा स्विफ्ट को पेश किया , मुझे आश्चर्य है कि आप इसे मौजूदा ऑब्जेक्टिव-सी लाइब्रेरी के साथ कैसे एकीकृत कर सकते हैं जो कोकोपोड्स के माध्यम से उपलब्ध हैं ?
जवाबों:
कोकोपोड्स 0.36 और इसके बाद के संस्करण में उस use_frameworks!निर्देश का परिचय दिया गया है जिसका तात्पर्य है कि स्विफ्ट में ऑब्जेक्टिव-सी पॉड्स आयात करने के लिए ब्रिजिंग हेडर की आवश्यकता नहीं है।
कृपया MBProgressHUD और Alamofire का उपयोग करके एक पूर्ण उदाहरण नीचे देखें :
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.3'
use_frameworks!
pod 'Alamofire', '>= 1.2.2' # Swift pod
pod 'MBProgressHUD', '>= 0.9.1' # Objective-C pod
अपने ब्रिजिंग हेडर से #imports निकालें या ज़रूरत न होने पर ब्रिजिंग हेडर फ़ाइल को भी हटा दें। यदि आप बाद की संभावना चुनते हैं, तो अपने Xcode प्रोजेक्ट कॉन्फ़िगरेशन में पथ (इस हटाए गए ब्रिजिंग हेडर फ़ाइल) को हटाना न भूलें।
प्रत्येक स्विफ्ट फ़ाइलों के शीर्ष पर import MBProgressHUD/ या जोड़ें import Alamofireजो इन वर्ग (तों) की आवश्यकता है।
अब आप bona fide चौखटे का उपयोग कर रहे हैं, इसलिए आपकी दुश्मनी उड़ान में बदल गई है! आपके पास स्विफ्ट की एक पंक्ति हो सकती है जो इस तरह से ब्रिजिंग हेडर के साथ ठीक थी:
progressHUD.mode = MBProgressHUDModeIndeterminate
अब यह बनना है:
progressHUD.mode = MBProgressHUDMode.Indeterminate
बड़े सौदे के लिए नहीं, लेकिन त्रुटियों का ढेर आपको भटका सकता है कि आपके पास एक बड़ी समस्या है यदि आप बहुत सारे उद्देश्य-सी का उपयोग कर रहे हैं।
आपकी जानकारी के लिए: मुझे लगता है (आपको खुद ही यह सुनिश्चित करने के लिए परीक्षण करना होगा) कि use_frameworks! आपके पॉडफाइल में निर्देश केवल iOS> = 8 को लक्षित Xcode परियोजनाओं के साथ संगत है।
ऐसा लगता है कि यह प्रक्रिया कोको और उद्देश्य-सी प्रलेखन के साथ स्विफ्ट के उपयोग के मिक्स एंड मैच सेक्शन में वर्णित एक के समान है ।
pod install।Example-Bridging-Header.h, और इसे प्रोजेक्ट में जोड़ें।Objective-C Bridging Headerअपने लक्ष्य के लिए सेट करें :
अब आप अपनी लाइब्रेरी का उपयोग कर सकते हैं, उस स्थिति में, आपकी स्विफ्ट फ़ाइल में MKUnits:
let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)
यहां और अधिक: स्विफ्ट परियोजना के साथ कोकोपोड्स को एकीकृत करना
#import <Reachability/Reachability.h>थी #import "Reachability.h"।
अद्यतन : CocoaPods 0.36 स्थिर संस्करण जारी किया गया है। यह आधिकारिक तौर पर स्विफ्ट का समर्थन करता है।
कोकोपोड्स अब अपने नवीनतम 0.36 रिलीज में स्विफ्ट का समर्थन करता है। यह अभी भी बीटा में है लेकिन यह काम करता है।
सबसे पहले आपको अपने टर्मिनल में इसे चलाकर CocoaPods बीटा (वर्तमान में बीटा 2) स्थापित करना होगा।
sudo gem install cocoapods --pre
तो इतना ही है। आप स्विफ्ट लाइब्रेरी जोड़ सकते हैं जैसे आप सामान्य रूप से करते हैं।
लेकिन अगर आप कोको-पोज़ के माध्यम से एक स्विफ्ट प्रोजेक्ट के लिए ऑब्जेक्टिव-सी में लिखी गई लाइब्रेरी को जोड़ना चाहते हैं तो एक पकड़ है। आपको use_frameworks!अपने पोडफाइल में लाइन जोड़ने की आवश्यकता है । यहाँ एक उदाहरण है।
use_frameworks!
platform :ios, '8.0'
pod 'MagicalRecord'
मैंने इस बारे में एक ब्लॉग पोस्ट भी लिखी है ।
use_frameworks!केवल iOS> = 8 के लिए ही सही है? यदि ऐसा है तो आपको अपने उत्तर में यह लिखना चाहिए।
अब आप कोकोपोड्स 0.36.0 संस्करण का उपयोग करके चला सकते हैं sudo gem install cocoapodsजो स्विफ्ट फ्रेमवर्क को एकीकृत करने का समर्थन करता है। जब आप तेजी से लिखे गए ढांचे का उपयोग करते हैं, तो आपको पोडफाइल में इसका उपयोग स्पष्ट रूप से करना चाहिए:
platform :ios, '8.0'
use_frameworks!
pod 'Alamofire'