首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Swift中区分UPC-E和EAN-8

在Swift中区分UPC-E和EAN-8
EN

Stack Overflow用户
提问于 2014-12-19 20:36:47
回答 4查看 2.5K关注 0票数 4

关于条形码,UPC-EEAN-8的数字数量相同.(8)

当我扫描条形码时,我必须删除支票数字。我必须删除它才能与数据库中的条形码匹配。

我如何区分这两个数字?和我的其他条形码,我根据数字长度进行区分,并删除最后一个数字,但是对于这两个数字,我不能,因为它们都是8位,只需要删除1位检查数字

  • EAN-8的检查数字不需要删除。
  • UPC-E的检查数字是字符索引7(最后一个数字),以及数字系统字符在索引0(第一个数字)。

有什么方法可以根据校验位算法来区分吗,或者.

EN

回答 4

Stack Overflow用户

发布于 2014-12-20 00:44:44

我不认为你总能做到。EN-8和UPC有不同的校验和机制.对于UPC,首先展开到UPC,然后计算校验和.对于EAN-8,您只需使用前7位数字。如果检查数字只对EAN-8或UPC-E有效,那么您已经得到了答案。但是,如果两者都匹配(我相信这是可能的),那么您就不能仅仅根据数字来确定它是EAN8还是UPCE。

票数 4
EN

Stack Overflow用户

发布于 2014-12-19 20:45:48

我不认为这个问题与Swift有关。我猜想条形码扫描器是通过USB端口连接的。扫描器可能伪装成键盘,并“键入”解码的数据。您需要参考扫描仪的文档,才能了解如何重新配置扫描仪,以便除了解码的数据之外,还提供诊断数据。诊断将包括条形码的类型。

作为解决办法,您可以删除最后一个数字,尝试数据库查找,如果失败,请删除第一个数字并再次尝试查找。

票数 1
EN

Stack Overflow用户

发布于 2014-12-20 00:04:15

最后做了个工作..。如果它没有连接,那么删除并重试。谢谢库巴

代码语言:javascript
运行
复制
if (barcodeLength == 13) {

        // EAN-13 \\

        // ********** Database Function ********** Database Function ********** \\


        // 1
        let urlString: String = "http://\(hostString):\(portString)/barcode.php?&password=\(passString)&db=\(dbString)&barNum=\(self.scannedBarcode)"
        let url: NSURL?  = NSURL(string: urlString)!
        let urlSession = NSURLSession.sharedSession()


        //2
        let jsonQuery = urlSession.dataTaskWithURL(url!, completionHandler: { data, response, error -> Void in
            if (error != nil) {
                println("\(error.localizedDescription)")
            }
            var err: NSError?

            var jsonResult: Array? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSArray?



            if (err != nil) {


                println("Can't connect using credentials")
                println("JSON Error \(err!.localizedDescription)")



            }

            if jsonResult?.count == 0 {

                println("Check digit removed from EAN-13")

                self.scannedBarcode.removeAtIndex(self.scannedBarcode.endIndex.predecessor())

                println(self.scannedBarcode)


                self.jsonComp()

                return

            }

            println("Well, this is 13 digit EAN-13")

            // 4

            let itemID: String! = jsonResult![0]["ITEM_ID"] as NSString
            let itemName: String! = jsonResult![0]["ITEM_Kitchen_Name"] as NSString
            let itemPrice: String! = jsonResult![0]["ITEM_Sale_Price"] as NSString


            println(itemID, itemName, itemPrice)

            self.selectedID = itemID
            self.selectedName = itemName
            self.selectedPrice = itemPrice


            dispatch_async(dispatch_get_main_queue(), {


                self.performSegueWithIdentifier("editPrice", sender: AnyObject?())

                //
            })
        })

        // 5
        jsonQuery.resume()


    }

    else if (barcodeLength == 12) {

        // UPC-A \\

        // ********** Database Function ********** Database Function ********** \\


        // 1
        let urlString: String = "http://\(hostString):\(portString)/barcode.php?&password=\(passString)&db=\(dbString)&barNum=\(self.scannedBarcode)"
        let url: NSURL?  = NSURL(string: urlString)!
        let urlSession = NSURLSession.sharedSession()


        //2
        let jsonQuery = urlSession.dataTaskWithURL(url!, completionHandler: { data, response, error -> Void in
            if (error != nil) {
                println("\(error.localizedDescription)")
            }
            var err: NSError?

            var jsonResult: Array? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSArray?



            if (err != nil) {


                println("Can't connect using credentials")
                println("JSON Error \(err!.localizedDescription)")



            }

            if jsonResult?.count == 0 {

                println("Check digit removed from UPC-A")

                self.scannedBarcode.removeAtIndex(self.scannedBarcode.endIndex.predecessor())

                println(self.scannedBarcode)


                self.jsonComp()

                return

            }

            println("Well, this is 12 digit UPC-A")

            // 4

            let itemID: String! = jsonResult![0]["ITEM_ID"] as NSString
            let itemName: String! = jsonResult![0]["ITEM_Kitchen_Name"] as NSString
            let itemPrice: String! = jsonResult![0]["ITEM_Sale_Price"] as NSString


            println(itemID, itemName, itemPrice)

            self.selectedID = itemID
            self.selectedName = itemName
            self.selectedPrice = itemPrice


            dispatch_async(dispatch_get_main_queue(), {


                self.performSegueWithIdentifier("editPrice", sender: AnyObject?())

                //
            })
        })

        // 5
        jsonQuery.resume()



    }

    else if (barcodeLength == 8) {



        // ********** Database Function ********** Database Function ********** \\


        // 1
        let urlString: String = "http://\(hostString):\(portString)/barcode.php?&password=\(passString)&db=\(dbString)&barNum=\(self.scannedBarcode)"
        let url: NSURL?  = NSURL(string: urlString)!
        let urlSession = NSURLSession.sharedSession()


        //2
        let jsonQuery = urlSession.dataTaskWithURL(url!, completionHandler: { data, response, error -> Void in
            if (error != nil) {
                println("\(error.localizedDescription)")
            }
            var err: NSError?

            var jsonResult: Array? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSArray?



            if (err != nil) {


                println("Can't connect using credentials")
                println("JSON Error \(err!.localizedDescription)")



            }

            if jsonResult?.count == 0 {

                println("Well, this is UPC-E")

                self.scannedBarcode.removeAtIndex(self.scannedBarcode.startIndex)
                self.scannedBarcode.removeAtIndex(self.scannedBarcode.endIndex.predecessor())


                println(self.scannedBarcode)


                self.jsonComp()

                return

            }

            println("Well, this is EAN-8")

            // 4

            let itemID: String! = jsonResult![0]["ITEM_ID"] as NSString
            let itemName: String! = jsonResult![0]["ITEM_Kitchen_Name"] as NSString

            if jsonResult![0]["ITEM_Sale_Price"] == nil {

                println("No Sale Price")

                dispatch_async(dispatch_get_main_queue(), {

                    HUDController.sharedController.hide(afterDelay: 0.1)

                })

                var refreshAlert = UIAlertController(title: "Camaleon Reports", message: "Barcode does not have a price set", preferredStyle: UIAlertControllerStyle.Alert)
                refreshAlert.addAction(UIAlertAction(title: "Retry", style: .Default, handler: { (action: UIAlertAction!) in
                    println("Yes Logic")

                }))


                self.presentViewController(refreshAlert, animated: true, completion: nil)

                return

            }

            let itemPrice: String! = jsonResult![0]["ITEM_Sale_Price"] as NSString


            println(itemID, itemName, itemPrice)

            self.selectedID = itemID
            self.selectedName = itemName
            self.selectedPrice = itemPrice


            dispatch_async(dispatch_get_main_queue(), {


                self.performSegueWithIdentifier("editPrice", sender: AnyObject?())

                //
            })
        })

        // 5
        jsonQuery.resume()

    } else {


        dispatch_async(dispatch_get_main_queue(), {

            HUDController.sharedController.hide(afterDelay: 0.1)

        })

        var refreshAlert = UIAlertController(title: "Camaleon Reports", message: "Barcode does not exist", preferredStyle: UIAlertControllerStyle.Alert)
        refreshAlert.addAction(UIAlertAction(title: "Retry", style: .Default, handler: { (action: UIAlertAction!) in
            println("Yes Logic")

        }))


        self.presentViewController(refreshAlert, animated: true, completion: nil)

        return


    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27573543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档