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

Ios 斯威夫特:不管我做什么,CIDetector总是零,ios,swift,qr-code,Ios,Swift,Qr Code,我不明白为什么这段代码不起作用,检测器总是为零,CIDetectorTypeQRCode常量为零,一切都可以用CIDetectorTypeFace。 我发现了苹果API的一个错误。这是官方文件: 你有解决办法吗? 提前感谢guy的您提供的代码不能有nil检测器,因为它不是可选的,如果是,编译器会抱怨代码中的几个地方 如果功能是空的,那么您知道它在您的图像中没有找到二维码。尝试提供更好的图像或降低图像的准确性 如果功能不为空,则您的强制转换失败 编辑: 无法在构造函数中传递nil上下文。我发现在设

我不明白为什么这段代码不起作用,检测器总是为零,CIDetectorTypeQRCode常量为零,一切都可以用CIDetectorTypeFace。 我发现了苹果API的一个错误。这是官方文件:

你有解决办法吗?
提前感谢guy的

您提供的代码不能有nil检测器,因为它不是可选的,如果是,编译器会抱怨代码中的几个地方

如果功能是空的,那么您知道它在您的图像中没有找到二维码。尝试提供更好的图像或降低图像的准确性

如果功能不为空,则您的强制转换失败

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

我发现在设备上使用解决了此问题。模拟器对我来说似乎总是返回零

确保您的ImgChoosed.image不是零。 更改另一个输入图像以进行测试。 在功能中尝试功能作为![CIQRCodeFeature]。
这也发生在我们身上。iPhone4S不会返回QRCode类型的CIDetector。其他类型为矩形,但面工作

同样的代码在iPhone6上也能正常工作。还没有在5或5s上测试过


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

我知道nil检测器不能是nil,但当我这样声明它时就是这样。XCode告诉我:致命错误:在展开detectorField行的可选值时意外发现nil。我试着把cidetector的准确度降低,但这是一样的。当我将ofType:CIDECTORTYPEQRCODE切换为CIDECTORTYPE时,所有内容都会编译。@Tumeconnais该错误是因为无法传递nil上下文。因此我将context:ciContextExtraptions:nil和same放在一起。我不明白:@Tumeconnais如果UIKit中的一个参数是force unwrapped,则以结尾!那你不能过零。本例中的选项也是如此。context:CIContextoptions:[kCIContextPriorityRequestLow:true]这两者都没有关系,如果我遵循本教程,我可以将nil放在上下文中。但我不明白的是:如果我把CIDetectorofType:CIDetectorTypeFace,context:nil,options:[cidetectoraccurity:cidetectoraccurityhigh]放进去,一切都很好,没有错误发生。在iPhone 5上测试过,没有效果。不过他还是在iPad Air 2上工作过。两者都运行iOS9。
@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)")
        }



    }