CIDetectorError: '(String, CIContext?, [String: Any]?) -> CIDetector' не может быть преобразован в '(String, CIContext?, [String: Any]?) -> CIDetector?'

После преобразования в Swift 3.0по какой-то причине я получаю эту ошибку

'(String, CIContext?, [String: Any]?) -> CIDetector' не преобразуется в '(String, CIContext?, [String: Any]?) -> CIDetector?'

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

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

2 ответа

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

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

Удалите аннотацию типа и позвольте компилятору определить тип

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

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

Другие вопросы по тегам