无法将ZXingObjC集成到iOS Swift项目中

问题描述 投票:0回答:5

我正在开发一个 iOS 项目,该项目在条形码中显示客户编号。我已经使用 CocoaPods 安装了框架

ZXingObjC
,如 GitHub 中所述。

我可以毫无错误地编译我的项目。我还可以在我的 Objective-C 类中使用

ZXingObjC
的类,不会出现错误。之后,我将 import Command
#import <ZXingObjC/ZXingObjC.h>
添加到我的桥接头文件中,就像我的其他自定义 Objective-C 类一样,没有编译错误。 (我通过销毁一些导入语句来测试头文件,并得到了预期的文件未找到异常。)

但是现在,我无法在我的 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
    <ZXingObjC/ZXingObjC.h>
    #import "ZXingObjC/ZXingObjC.h"
    - 否 差异)
  • Windows 风格:重新启动 Xcode 和 Mac ;-)

我正在使用:

  • Xcode:6.3.2
  • CocoaPods:0.37.2
  • 项目部署目标:iOS 8.0
  • SDK:8.3

有人知道问题所在吗?有人可以帮忙吗? 如何让 ZXingObjC 框架在 swift 中可用?

ios objective-c xcode swift zxing
5个回答
5
投票

其实这是一个简单的问题:

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()        
       ....
    }

}

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
}

0
投票

我的项目中的标头搜索路径不正确。正确的值为:

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

第二行和第三行不是通过CocoaPods安装添加的。

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


0
投票

我尝试了此页面上的所有操作来将 ZXingObjC 添加为 Pod。 我的目标是生成阿兹特克条形码。

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

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

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

没有运气。 还有更多建议吗?

编辑 - 我进入目标、构建设置并搜索标题搜索路径。 我添加了“${PODS_ROOT}/Headers/Public/ZXingObjC”和“${PODS_ROOT}/Headers/Private/ZXingObjC”

这似乎可以疏通任何损坏的东西。 现在可以了。 奇怪的是,我现在甚至可以删除这些条目并且它有效。


0
投票

解决方案 为了解决这个问题,我将以下行添加到我的 Podfile 中:

pod 'ZXingObjC', :git => 'https://github.com/zxingify/zxingify-objc'

这使我能够成功安装该库。

© www.soinside.com 2019 - 2024. All rights reserved.