我正在开发具有扫描条形码能力的应用程序,但我有一些字符的问题,这搞乱了我的一切。在android上也出现了同样的问题,我修复了它,但我不能以同样的方式修复swift。
我已经尝试了多个库和本机方法来从提供的字符串生成code128条形码的图像。它可以在任何东西上工作,除了特殊字符,比如“?”。我尝试了所有我在谷歌上读到的问题,但我仍然不能解决它。
extension UIImage {
convenience init?(barcode: String) {
let data = barcode.data(using: .ascii)
guard let filter = CIFilter(name: "CICode128BarcodeGenerator") else {
return nil
}
filter.setValue(data, forKey: "inputMessage")
guard let ciImage = filter.outputImage else {
return nil
}
self.init(ciImage: ciImage)
}
}
let barcode = UIImage(barcode: "some text")当扫描卡片上的条形码图像并保存该值时,一切正常。它甚至说“;038388”是code128类型,但是当我试图从它生成code128条形码图像时,不知何故它与“?”字符有问题。
发布于 2019-09-20 15:59:48
Code128被定义为只能对ASCII码进行编码,但ASCII码没有“?”字符。
转换let data = barcode.data(using: .ascii)失败。
我建议使用如下代码尽早捕捉到这一点
guard let data = barcode.data(using: .ascii) else {
return nil
}https://stackoverflow.com/questions/58023857
复制相似问题