我正在开发一个 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
Enable Modules: YES
Other Linker Flags: $(inherited) -ObjC
-framework "ZXingObjC"
#import
<ZXingObjC/ZXingObjC.h>
和#import "ZXingObjC/ZXingObjC.h"
- 否
差异)我正在使用:
有人知道问题所在吗?有人可以帮忙吗? 如何让 ZXingObjC 框架在 swift 中可用?
其实这是一个简单的问题:
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。 我的目标是生成阿兹特克条形码。
我检查了我的标题搜索路径。 正如 Reddas 所说,我必须手动添加“${PODS_ROOT}/Headers/Public/ZXingObjC”。 我还添加了 ZXingObjC 作为嵌入式二进制文件(在“常规”选项卡中)。
我检查了我的桥接文件,一切都很好。 我检查了我想要生成条形码的视图控制器。 import ZXingObjC 就在那里。
没有编译错误。 但我无法声明 ZXingObjC 的变量。
没有运气。 还有更多建议吗?
编辑 - 我进入目标、构建设置并搜索标题搜索路径。 我添加了“${PODS_ROOT}/Headers/Public/ZXingObjC”和“${PODS_ROOT}/Headers/Private/ZXingObjC”
这似乎可以疏通任何损坏的东西。 现在可以了。 奇怪的是,我现在甚至可以删除这些条目并且它有效。
解决方案 为了解决这个问题,我将以下行添加到我的 Podfile 中:
pod 'ZXingObjC', :git => 'https://github.com/zxingify/zxingify-objc'
这使我能够成功安装该库。