В Swift 4.2 есть изменение в реализации Неявно развернутый необязательный (IUO) , согласно swift blog теперь неявно развернутый необязательный T!будет рассматриваться как Т?с и дополнительный флаг для компилятора, чтобы знать, что это неявное необязательное развертывание.
Новая ментальная модель для IUO - это та, на которую вы обращаете вниманиебыть синонимом для?с добавлением, что он добавляет флаг к объявлению, сообщая компилятору, что объявленное значение может быть неявно развернуто.
Из-за этого изменения может возникнуть некоторая проблема совместимости источника, которая может потребовать измененияВаш код, прежде чем он будет успешно скомпилирован.
В Swift 3 объявления типа var a: Int?приведет к наличию необязательного типа и объявлений типа var b: String!приведет к тому, что b будет иметь тип ImplicitlyUnwrappedOptional.Он изменился в Swift 4.2, поэтому он показывает ошибку для ObjectMapper для Xcode 10, которая поставляется с swift 4.2, и аналогичная реализация была сделана для 3. * для Xcode 10.
В библиотеке Objectmapper есть некоторыеобъявления функций, которые раньше показывали предупреждения для swift 4.1, теперь отображаются как ошибки для swift 4.2.Обратитесь к изображению ниже для предупреждений в Xcode 9.4 и swift 4.1
![enter image description here](https://i.stack.imgur.com/hMoSf.png)
Есть несколько запросов на извлечение в репозитории ObjectMapper GitHub, которыеУстранена проблема, но они ожидают выхода новой бета-версии XCode в соответствии с обсуждениями, так как она использует только что принятую директиву complier , которая будет выпущена с новой бета-версией Xcode.
Обновление: Исправлена ошибка в версии ObjectMapper 3.3.0.