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])
В сообщении об ошибке указывается, что возвращаемый тип не является обязательным.