无法在iOS Swift项目中集成ZXingObjC

时间:2015-06-03 08:47:11

标签: ios objective-c xcode swift zxing

我正在开发一个iOS项目,它在条形码中显示客户编号。我已经使用C {[3}}中描述的CocoaPods安装了框架ZXingObjC

我可以毫无错误地编译我的项目。我也可以在Objective-C类中使用ZXingObjC的类,没有错误。之后,我将导入命令#import <ZXingObjC/ZXingObjC.h>添加到我的桥接头文件中,就像我的其他自定义objective-c类一样,没有编译错误。 (我通过销毁一些import语句测试了头文件,并得到了预期的文件未找到异常。)

但是现在,我不能在我的快速课程中使用任何类ZXingObjC。我只得到以下编译错误:Use of undeclared type '...'。 Xcode自动完成功能也不起作用。

e.g。

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框架?

4 个答案:

答案 0 :(得分:5)

实际上这是一个简单的问题:

Podfile

Handle<Value> js_result = jsUpdateFunc->Call(jsGlobal, 0, args);

所以,在终端上:

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

platform :ios, '8.0'
use_frameworks!

pod 'ZXingObjC', '~> 3.1'

然后,一旦在Xcode上打开项目,你必须编辑添加ZXingObj的桥接头:

cd workspace
pod install

最后,在使用ZXingObjC的swift类中,你必须导入ZXingObjC。

#import <ZXingObjC/ZXingObjC.h>

答案 1 :(得分:1)

当您需要使用此条形码设置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
}

答案 2 :(得分:0)

我的项目中的标题搜索路径不正确。正确的价值观是:

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

第二行和第三行未通过CocoaPods安装添加。

编辑:必须将已安装的框架添加到项目“常规”选项卡中的“嵌入式二进制文件”中。

答案 3 :(得分:0)

我尝试了此页面上的所有内容,将ZXingObjC添加为Pod。我的目标是生成一个Aztec条形码。

我查看了我的标题搜索路径。正如Reddas所说,我不得不手动添加“$ {PODS_ROOT} / Headers / Public / ZXingObjC”。我还将ZXingObjC添加为嵌入式二进制文件(在“常规”选项卡中)。

我检查了我的桥接文件&amp;一切都很好。我检查了我想要生成条形码的视图控制器。 导入ZXingObjC 就在那里。

没有编译错误。但我无法声明ZXingObjC的变量。

没有运气。还有其他建议吗?

编辑 - 我进入了目标,构建设置并搜索了标题搜索路径。我添加了“$ {PODS_ROOT} /标题/ 公开 / ZXingObjC”和“$ {PODS_ROOT} /标题/ 私有 / ZXingObjC”

这似乎疏通了任何破裂。它现在有效。奇怪的是,我现在甚至可以删除这些条目并且它可以工作。