2016-11-29 7 views
2

После преобразования в Swift 3.0, по какой-то причине, я получаю эту ошибкуCIDetectorError: '(String, CIContext ?, [String: Any]?) -> CIDetector' не конвертируется в '(String, CIContext ?, [String: Any]?) -> CIDetector?'

'(String, CIContext?, [String : Any]?) -> CIDetector' is not convertible to '(String, CIContext?, [String : Any]?) -> CIDetector?'

//When initiating 
let detector: CIDetector? = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: [CIDetectorAccuracy: CIDetectorAccuracyHigh]) 

я только получаю ошибку, когда я пытаюсь архив. Когда я бегу, все работает нормально.

+1

Способ устранения этой проблемы: http://stackoverflow.com/a/40463013/4045472 – bubuxu

+0

Возможный дубликат [CIDetectorTypeQRCode дает ошибку] ​​(http://stackoverflow.com/questions/40409417/cidetectortypeqrcode-gives-error) – jk2K

ответ

0

Это хороший пример бессмысленности аннотаций явного типа.

Снимите аннотацию типа и пусть компилятор определить тип

let detector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: [CIDetectorAccuracy: CIDetectorAccuracyHigh]) 

Сообщение об ошибке говорится о том, что тип возвращаемого значения не является обязательным.

+2

Спасибо @vadian. Все еще получите эту ошибку. Он компилируется. Я получаю эту ошибку, только когда я архивирую. Тип - это 'String', все еще не уверен, почему появляются эти ошибки. –

+0

У меня такая же ошибка, только когда ** Архив **. – bubuxu

0

У вас нет репутации, чтобы комментировать, поэтому добавьте, что это все еще проблема в XCode 8.1 через месяц. Только в архиве. Я делаю вывод о типе.