我正在开发具有扫描条形码功能的应用程序,但是我遇到了一些字符,这些字符对我来说一团糟。 android上也发生了同样的问题,我已将其修复,但无法以相同的方式迅速修复它。
我尝试了多种库和本机方法从提供的String中生成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条形码图像时,不知何故它带有“¿”字符。
答案 0 :(得分:0)
代码128被定义为仅能够编码ASCII,但是ASCII没有“¿”字符。
转换let data = barcode.data(using: .ascii)
失败。
我建议使用
之类的代码尽早捕获guard let data = barcode.data(using: .ascii) else {
return nil
}