स्विफ्ट प्रोजेक्ट के साथ कोकोपोड्स को कैसे एकीकृत करें?


84

जैसा कि Apple ने अपनी नई प्रोग्रामिंग भाषा स्विफ्ट को पेश किया , मुझे आश्चर्य है कि आप इसे मौजूदा ऑब्जेक्टिव-सी लाइब्रेरी के साथ कैसे एकीकृत कर सकते हैं जो कोकोपोड्स के माध्यम से उपलब्ध हैं ?


आप अपने स्विफ्ट प्रोजेक्ट के साथ कोकोआपोड्स सेटअप करने के बारे में मेरा हाल का लेख भी पढ़ सकते हैं ।
हेमांग

जवाबों:


78

कोकोपोड्स 0.36 और इसके बाद के संस्करण में उस use_frameworks!निर्देश का परिचय दिया गया है जिसका तात्पर्य है कि स्विफ्ट में ऑब्जेक्टिव-सी पॉड्स आयात करने के लिए ब्रिजिंग हेडर की आवश्यकता नहीं है।

कृपया MBProgressHUD और Alamofire का उपयोग करके एक पूर्ण उदाहरण नीचे देखें :

1. पोडफाइल

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

2. विलोपन

अपने ब्रिजिंग हेडर से #imports निकालें या ज़रूरत न होने पर ब्रिजिंग हेडर फ़ाइल को भी हटा दें। यदि आप बाद की संभावना चुनते हैं, तो अपने Xcode प्रोजेक्ट कॉन्फ़िगरेशन में पथ (इस हटाए गए ब्रिजिंग हेडर फ़ाइल) को हटाना न भूलें।

3. आयात जोड़ना

प्रत्येक स्विफ्ट फ़ाइलों के शीर्ष पर import MBProgressHUD/ या जोड़ें import Alamofireजो इन वर्ग (तों) की आवश्यकता है।

4. यदि आवश्यक हो तो एनम को ठीक करें

अब आप bona fide चौखटे का उपयोग कर रहे हैं, इसलिए आपकी दुश्मनी उड़ान में बदल गई है! आपके पास स्विफ्ट की एक पंक्ति हो सकती है जो इस तरह से ब्रिजिंग हेडर के साथ ठीक थी:

progressHUD.mode = MBProgressHUDModeIndeterminate

अब यह बनना है:

progressHUD.mode = MBProgressHUDMode.Indeterminate

बड़े सौदे के लिए नहीं, लेकिन त्रुटियों का ढेर आपको भटका सकता है कि आपके पास एक बड़ी समस्या है यदि आप बहुत सारे उद्देश्य-सी का उपयोग कर रहे हैं।

( इस उत्तर का स्रोत )

आपकी जानकारी के लिए: मुझे लगता है (आपको खुद ही यह सुनिश्चित करने के लिए परीक्षण करना होगा) कि use_frameworks! आपके पॉडफाइल में निर्देश केवल iOS> = 8 को लक्षित Xcode परियोजनाओं के साथ संगत है।


73

ऐसा लगता है कि यह प्रक्रिया कोको और उद्देश्य-सी प्रलेखन के साथ स्विफ्ट के उपयोग के मिक्स एंड मैच सेक्शन में वर्णित एक के समान है ।

  1. अपना पॉडफाइल बनाएं और चलाएं pod install
  2. एक नई Object-C हेडर फ़ाइल बनाएँ Example-Bridging-Header.h, और इसे प्रोजेक्ट में जोड़ें।
  3. ब्रिज हेडर में इंपोर्ट स्टेटमेंट जोड़ें ।
  4. Objective-C Bridging Headerअपने लक्ष्य के लिए सेट करें :

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

अब आप अपनी लाइब्रेरी का उपयोग कर सकते हैं, उस स्थिति में, आपकी स्विफ्ट फ़ाइल में MKUnits:

let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)

यहां और अधिक: स्विफ्ट परियोजना के साथ कोकोपोड्स को एकीकृत करना


3
मेरे लिए प्रॉजेक्ट स्टेटमेंट में प्रोजेक्ट डायर, उर्फ ​​को शामिल करने की जरूरत #import <Reachability/Reachability.h>थी #import "Reachability.h"
काइल क्लेग

बस एक अद्यतन। स्विफ्ट PODs, यानी: Swift Libs भी जल्द ही CocoaPods द्वारा समर्थित होगी। अगला संस्करण 0.36 कोकोआपोड्स में पूर्ण स्विफ्ट समर्थन लाएगा। अधिकांश फीचर पहले से ही पूर्ण हैं और आप स्विफ्ट पॉड्स को अभी अपने ब्लॉग-पोस्ट
सचिन पालेवार

2
Cocoapods 0.36 और इसके बाद के संस्करण का उपयोग करता है_फ्रेमवर्क! निर्देश जो बताता है कि स्विफ्ट में ऑब्जेक्टिव-सी पॉड्स आयात करने के लिए ब्रिजिंग हेडर की आवश्यकता नहीं है (कृपया नीचे मेरा उत्तर देखें)।
राजा-जादूगर

5
उपरोक्त के अलावा, मैंने पाया कि मुझे बिल्ड सेटिंग्स में अपने "उपयोगकर्ता हैडर खोज पथ" में "पॉड्स / **" जोड़ना था। मुझे पुल फ़ाइल में "#import <Foundation / Foundation.h>" भी जोड़ना था।
स्विफ्टी मैकस्वीफ्टरटन

1
थैंक यू स्विफ्टी। मैंने use_frameworks की कोशिश की! लेकिन यह मेरे लिए काम नहीं किया। उपयोगकर्ता खोज पथ में "पॉड्स / **" जोड़कर काम किया।
user3246173

16

अद्यतन : CocoaPods 0.36 स्थिर संस्करण जारी किया गया है। यह आधिकारिक तौर पर स्विफ्ट का समर्थन करता है।


कोकोपोड्स अब अपने नवीनतम 0.36 रिलीज में स्विफ्ट का समर्थन करता है। यह अभी भी बीटा में है लेकिन यह काम करता है।

सबसे पहले आपको अपने टर्मिनल में इसे चलाकर CocoaPods बीटा (वर्तमान में बीटा 2) स्थापित करना होगा।

sudo gem install cocoapods --pre

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

लेकिन अगर आप कोको-पोज़ के माध्यम से एक स्विफ्ट प्रोजेक्ट के लिए ऑब्जेक्टिव-सी में लिखी गई लाइब्रेरी को जोड़ना चाहते हैं तो एक पकड़ है। आपको use_frameworks!अपने पोडफाइल में लाइन जोड़ने की आवश्यकता है । यहाँ एक उदाहरण है।

use_frameworks!
platform :ios, '8.0'

pod 'MagicalRecord'

मैंने इस बारे में एक ब्लॉग पोस्ट भी लिखी है ।


3
use_frameworks!केवल iOS> = 8 के लिए ही सही है? यदि ऐसा है तो आपको अपने उत्तर में यह लिखना चाहिए।
मिलाप

2

यदि आपको अपने ब्रिजिंग-हेडर में कोई त्रुटि नहीं मिली है, तो आप यह सुनिश्चित करना चाहते हैं कि आपकी पॉड लाइब्रेरी को आपकी बिल्ड स्कीम में जोड़ा जा रहा है।

CocoaPods समस्या निवारण अनुभाग कैसे आइटम # 4 के तहत ऐसा करने के लिए का वर्णन करता है यहां


1

अब आप कोकोपोड्स 0.36.0 संस्करण का उपयोग करके चला सकते हैं sudo gem install cocoapodsजो स्विफ्ट फ्रेमवर्क को एकीकृत करने का समर्थन करता है। जब आप तेजी से लिखे गए ढांचे का उपयोग करते हैं, तो आपको पोडफाइल में इसका उपयोग स्पष्ट रूप से करना चाहिए:

platform :ios, '8.0'
use_frameworks!
pod 'Alamofire'

0

मेरे मामले में, मैंने पाया कि मैं पोड्स को मुख्य लक्ष्य में शामिल नहीं कर रहा था, लेकिन केवल पोडफाइल में टेस्ट और टेस्टीयू के लक्ष्य के रूप में यहां बताया गया है

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