iOS扫描12位数条形码却拿到了个13位的条形码怎么办?

在常见的条形码中,UPC-A码长度是12位的,EAN13码长度是13位的,苹果将UPC-A条码和EAN13条码放到了一起不做区分!UPC-A条码实际上是EAN-13条码的子集。如果一个EAN-13条码的第一位数字是0,那么这个条码既是EAN-13码也同样是是UPC-A码(去掉开头的0)。
解决方法:以0开头的EAN13码实际上就是UPC-A码在前面补了一个0,在AVFoundation扫描得到的结果里只需要判断条码的类别是否AVMetadataObjectTypeEAN13Code并且是否以0开头,如果是的话就把第一位的0直接删掉就好啦~

- (NSString *)getFinalStringValue:(AVMetadataMachineReadableCodeObject *)obj {
    NSString *finalStringVal = @"";
    if ([obj.type isEqualToString:@"org.gs1.EAN-13"] && [obj.stringValue hasPrefix:@"0"]) {
        finalStringVal = [obj.stringValue substringFromIndex:1];
    } else {
        finalStringVal = obj.stringValue;
    }
    return finalStringVal;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容