2015-06-03 14 views
5

में जेएक्सिंग ओबीजेसी को एकीकृत करने में असमर्थ आईओएस प्रोजेक्ट पर काम कर रहा है, जो बारकोड में ग्राहक संख्या दिखाता है। मैंने कोकोआपोड्स के साथ फ्रेमवर्क ZXingObjC स्थापित किया था, जो GitHub में वर्णित है।आईओएस स्विफ्ट प्रोजेक्ट

मैं बिना किसी त्रुटि के अपने प्रोजेक्ट को संकलित कर सकता हूं। मैं त्रुटियों के बिना, मेरे उद्देश्य-सी कक्षाओं में ZXingObjC की कक्षाओं का भी उपयोग कर सकता हूं। इसके बाद, मैंने अपनी ब्रिजिंग हेडर फ़ाइल में आयात कमांड #import <ZXingObjC/ZXingObjC.h> को जोड़ा है, जैसे कि मेरे अन्य कस्टम ऑब्जेक्ट-सी क्लासेस, संकलित त्रुटियों के बिना। (मैंने कुछ आयात विवरणों को नष्ट करके हेडर फ़ाइल टेस्टेट की थी और अपेक्षित फ़ाइल को अपवाद नहीं मिला था।)

लेकिन अब, मैं अपने स्विफ्ट कक्षाओं में ZXingObjC की किसी भी कक्षा का उपयोग नहीं कर सकता। मुझे केवल निम्न संकलन त्रुटि मिली: Use of undeclared type '...'। एक्सकोड स्वत: पूर्ण काम भी नहीं कर रहा है।

उदा।

var test : ZXMultiFormatWriter? 
>> Use of undeclared type 'ZXMultiFormatWriter' 

मैंने कोशिश की:

  • सेटअप नई परियोजना, एक ही मुद्दा
  • जाँच हैडर खोज पथ: $(SRCROOT)/Pods/Headers/Public/Adjust
  • पुनर्स्थापित ZXingObjC ढांचे
  • जाँच निर्माण सेटिंग्स: Enable Modules: YES
  • जाँच बिल्ड सेटिंग्स: Other Linker Flags: $(inherited) -ObjC -framework "ZXingObjC"
  • निर्माण चरणों में जाँच जुड़ा हुआ बाइनरी: ढांचा ब्रिजिंग हेडर फाइल (#import <ZXingObjC/ZXingObjC.h> और #import "ZXingObjC/ZXingObjC.h" - कोई अंतर) में
  • जाँच की इंपोर्ट स्टेटमेंट जोड़ा जाता है
  • विंडोज शैली: पुन: प्रारंभ Xcode और मैक ;-)

मैं उपयोग कर रहा हूँ:

  • Xcode: 6.3.2
  • CocoaPods: 0.37.2
  • परियोजना तैनाती लक्ष्य: आईओएस 8.0
  • एसडीके: 8,3

किसी को भी समस्या पता है? क्या कोई मदद कर सकता है? मैं ZXingObjC ढांचे को तेजी से कैसे उपलब्ध कर सकता हूं?

+0

अन्य लिंकर झंडे में, मैं $ (विरासत में मिला है) -ObjC -l "फलियाँ-ZXingObjC" - फ्रेमवर्क "एवीफाउंडेशन" -फ्रेमवर्क "कोरग्राफिक्स" -फ्रेमवर्क "कोरमीडिया" -फ्रेमवर्क "कोरविडियो" -फ्रेमवर्क "इमेजियो" -फ्रेमवर्क "क्वार्ट्जकोर" और अच्छी तरह से काम करता है। –

उत्तर

0

हेडर खोज पथ मेरी परियोजना में सही नहीं था। सही मान हैं:

$(inherited) 
"${PODS_ROOT}/Headers/Public" 
"${PODS_ROOT}/Headers/Public/ZXingObjC" 

दूसरी और तीसरी पंक्ति CocoaPods साथ स्थापना से नहीं जोड़ा गया था।

संपादित करें: स्थापित ढांचे को परियोजना के सामान्य टैब में "एम्बेडेड बाइनरी" में जोड़ा जाना है।

4

वास्तव में यह एक आसान मुद्दा है:

Podfile

source 'https://github.com/CocoaPods/Specs.git' 

platform :ios, '8.0' 
use_frameworks! 

pod 'ZXingObjC', '~> 3.1' 

तो, टर्मिनल पर:

cd workspace 
pod install 

फिर, Xcode पर एक बार खोला परियोजना, जिसे आप संपादित करना है ब्रिजिंग हेडर ZXingObj जोड़ना:

#import <ZXingObjC/ZXingObjC.h> 

अंत में, ZXingObjC का उपयोग करने वाले आपके त्वरित वर्गों में, आपको ZXingObjC आयात करना होगा।

import ZXingObjC 

class ZXingObjCWrapper { 

    func encode() { 
     let writer = ZXMultiFormatWriter.writer()   
     .... 
    } 

} 
0

मैंने इस पृष्ठ पर सब कुछ करने की कोशिश की ताकि ZXingObjC को पॉड के रूप में जोड़ा जा सके। मेरा लक्ष्य एज़्टेक बारकोड उत्पन्न करना था।

मैंने अपने शीर्षलेख खोज पथ की जांच की। जैसा कि रेडदास ने कहा था, मुझे मैन्युअल रूप से "$ {PODS_ROOT}/शीर्षलेख/सार्वजनिक/ZXingObjC" जोड़ना पड़ा था। मैंने ZXingObjC को एंबेडेड बाइनरी (सामान्य टैब में) के रूप में भी जोड़ा।

मैंने अपनी ब्रिजिंग फ़ाइल & की जांच की सभी अच्छी थी। मैंने अपने व्यू कंट्रोलर की जांच की जहां मैं बारकोड उत्पन्न करना चाहता था। आयात ZXingObjC आयात था।

कोई संकलन त्रुटियां नहीं। लेकिन मैं ZXingObjC का एक चर घोषित नहीं कर सकता।

कोई भाग्य नहीं। कोई और सुझाव?

EDIT - मैं लक्ष्य में गया, सेटिंग्स बनाएं और शीर्षलेख खोज पथ की खोज की। मैं दोनों "$ {PODS_ROOT}/हेडर/लोक/ZXingObjC" और "$ {PODS_ROOT}/हेडर/निजी/ZXingObjC"

में जोड़ा इस unclog करने के लिए जो कुछ भी तोड़ दिया लग रहा था। यह अब काम करता है। आश्चर्यजनक रूप से, अब मैं उन प्रविष्टियों को भी हटा सकता हूं और यह काम करता है।

0

जब आप इस बार कोड के साथ एक UIImage निर्धारित करने की आवश्यकता के लिए कोड के बाकी:

func generateDataMatrixQRCode(from string: String) -> UIImage? { 
    do { 
     let writer = ZXMultiFormatWriter() 
     let hints = ZXEncodeHints() as ZXEncodeHints 
     let result = try writer.encode(string, format: kBarcodeFormatDataMatrix, width: 1000, height: 1000, hints: hints) 

     if let imageRef = ZXImage.init(matrix: result) { 
      if let image = imageRef.cgimage { 
       return UIImage.init(cgImage: image) 
      } 
     } 
    } 
    catch { 
     print(error) 
    } 
    return nil 
} 
संबंधित मुद्दे