2017-01-03 2 views
1

Ich möchte CIDetector-Klasse verwenden, um Rechtecke zu erkennen, aber ich kann die Instanz dieser Klasse nicht erstellen. Ich erhalte die Fehlermeldung:iOS Swift: CIDetectorTypeRectangle ist nicht konvertierbar

'(ofType: String, context: CIContext?, options: [String : AnyObject]?) -> CIDetector' is not convertible to '(ofType: String, context: CIContext?, options: [String : AnyObject]?) -> CIDetector?' 

ich diesen Code verwenden:

private lazy var rectangleDetector: CIDetector? = { 
    let options: [String : AnyObject] = [ 
     CIDetectorAccuracy: CIDetectorAccuracyHigh, 
     CIDetectorMinFeatureSize: 0.5, 
     CIDetectorAspectRatio: 0.7 
    ] 

    return CIDetector(ofType: CIDetectorTypeRectangle, context: nil, options: options) 
}() 

ich XCode 8.2.1 und Swift 2.3. Es gab keinen Fehler, als ich es in XCode 7 mit Swift 2.2 verwendete. Weiß jemand, was hier falsch ist?

+0

Sind Sie sicher, dass Sie Swift 2.3 oder Swift 3 arbeiten? –

+0

Ja, ich benutze Swift 2.3 und ich habe "Verwende Swift Language Version" auf YES gesetzt. –

+0

Versuchen Sie, Build zu reinigen, denn für mich funktioniert es mit Xcode 8 und Swift 2.3 Oder wenn immer noch nicht funktioniert, fügen Sie mehr Code mit ihm –

Antwort

1

Es sieht so aus, als ob der zurückgegebene Detektor jetzt optional ist. Versuchen Sie, es auszupacken, bevor Sie es verwenden.

guard let detector = CIDetector(ofType: CIDetectorTypeRectangle, context: nil, options: nil) else { 
    return //Or better yet throw error 
} 

//Do something with detector 
+0

Ich versuchte, es hat nicht geholfen. –

Verwandte Themen