簡體   English   中英

無法在iOS Swift項目中集成ZXingObjC

[英]Unable to integrate ZXingObjC in a iOS Swift Project

我正在開發一個iOS項目,它在條形碼中顯示客戶編號。 我在GitHub中描述了CocoaPods安裝了框架ZXingObjC

我可以毫無錯誤地編譯我的項目。 我也可以在Objective-C類中使用ZXingObjC類,沒有錯誤。 之后,我將import命令#import <ZXingObjC/ZXingObjC.h>到我的橋接頭文件中,就像我的其他自定義objective-c類一樣,沒有編譯錯誤。 (我通過銷毀一些import語句來測試頭文件並獲得了預期的文件未找到異常。)

但現在,我不能在我的swift類中使用任何類的ZXingObjC 我只得到以下編譯錯誤: Use of undeclared type '...' Xcode自動完成功能也不起作用。

例如

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語句( #import <ZXingObjC/ZXingObjC.h>#import "ZXingObjC/ZXingObjC.h" - 沒有區別)
  • Windows風格:重啟Xcode和Mac ;-)

我正在使用:

  • Xcode:6.3.2
  • CocoaPods:0.37.2
  • 項目部署目標:iOS 8.0
  • SDK:8.3

有誰知道這個問題? 有人可以幫忙嗎? 如何在swift中提供ZXingObjC框架?

實際上這是一個簡單的問題:

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的swift類中,您必須導入ZXingObjC。

import ZXingObjC

class ZXingObjCWrapper {

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

}

當您需要使用此條形碼設置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
}

標題搜索路徑在我的項目中不正確。 正確的價值觀是:

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

第二行和第三行未通過CocoaPods安裝添加。

編輯:必須將已安裝的框架添加到項目的“常規”選項卡中的“嵌入式二進制文件”中。

我嘗試了此頁面上的所有內容,將ZXingObjC添加為Pod。 我的目標是生成Aztec條形碼。

我檢查了我的標題搜索路徑。 正如Reddas所說,我不得不手動添加“$ {PODS_ROOT} / Headers / Public / ZXingObjC”。 我還將ZXingObjC添加為嵌入式二進制文件(在“常規”選項卡中)。

我檢查了我的橋接文件,一切都很好。 我檢查了我想要生成條形碼的視圖控制器。 進口ZXingObjC就在那里。

沒有編譯錯誤。 但我無法聲明ZXingObjC的變量。

沒運氣。 還有什么建議嗎?

編輯 - 我進入了目標,構建設置並搜索了標題搜索路徑。 我添加了“$ {PODS_ROOT} / Headers / Public / ZXingObjC”和“$ {PODS_ROOT} / Headers / Private / ZXingObjC”

這似乎疏通了任何破裂。 它現在有效。 奇怪的是,我現在甚至可以刪除這些條目並且它有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM