在常见的条形码中,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;
}
网友评论