斯威夫特:不管我做什么CIDetector总是零

时间:2015-03-10 20:52:17

标签: ios swift qr-code

我不明白为什么这段代码不起作用,检测器总是带有CIDetectorTypeQRCode常量为零,所有内容都适用于CIDetectorTypeFace。 我想到了Apple的API的一个错误。这是官方文件:Apple documentation

@IBAction func analyseTag(sender: AnyObject) {

        var detector:CIDetector = CIDetector(ofType: CIDetectorTypeQRCode, context:nil, options:[CIDetectorAccuracy: CIDetectorAccuracyHigh])
        var decode = ""
        var ciImage:CIImage = CIImage(image: ImgChoosed.image)
        var message:String = "";

        let features = detector.featuresInImage(ciImage)
        for feature in features as [CIQRCodeFeature] {
            message += feature.messageString
        }

        if(message == "") {
            println("nothing")

        } else {
            println("\(message)")
        }



    }

你有解决方案吗? 提前感谢你的家伙

4 个答案:

答案 0 :(得分:1)

这也发生在我们身上。 iPhone 4s不会返回QRCode类型的CIDetector。其他类型(矩形,面部)虽然工作...

相同的代码在iPhone 6上按预期工作。尚未在5或5s上进行过测试。

但两周前,我相信它还在4s上工作。当时它仍然在iOS 8上,我想。

答案 1 :(得分:0)

您提供的代码不能为detector,因为它不是可选的,编译器会在代码中抱怨代码中的几个位置。

如果功能为空,则表示您没有在图像中找到QR码。尝试提供更好的图片或调低CIDetectorAccuracy

如果功能不为空,那么您的演员表会失败。

编辑: 您无法在构造函数中传递nil上下文。

答案 2 :(得分:0)

  1. 确保您的ImgChoosed.image不是零。
  2. 更改另一个输入图像以进行测试。
  3. 试试@Component({ template: ....., directives: [FORM_DIRECTIVES] })

答案 3 :(得分:-2)

我发现在设备上使用解决了这个问题。模拟器似乎总是为我返回零。